<?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=Reibuehl</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=Reibuehl"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Reibuehl"/>
	<updated>2026-04-30T22:34:03Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38516</id>
		<title>SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38516"/>
		<updated>2023-07-22T16:30:30Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Readings an SunSpec angepasst, Power auf KW umgestellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=SolarEdgeSE8K.jpg&lt;br /&gt;
|Bildbeschreibung=SolarEdge Wechselrichter&lt;br /&gt;
|HWProtocol=Modubus TCP &lt;br /&gt;
|HWType=Wechselrichter&lt;br /&gt;
|HWCategory=Energieverbrauchsmessung&lt;br /&gt;
|HWComm=Ethernet TCP&lt;br /&gt;
|HWChannels=1 (bidiektional)&lt;br /&gt;
|HWVoltage=750V DC; 230V 3xAC&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch 2% (geschätzt)&lt;br /&gt;
|HWPoweredBy=230V~ 3xAC&lt;br /&gt;
|HWSize=317x512x214 (mm)&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#ModbusAttr ModbusAttr]&lt;br /&gt;
|HWManufacturer=[https://www.solaredge.com/de Solaredge]&lt;br /&gt;
}}&lt;br /&gt;
== Wechselrichter von SolarEdge in FHEM einbinden==&lt;br /&gt;
Dieser Artikel beschreibt die Einbindung von SolarEdge Wechselrichtern der Serie SE(x)K in ein FHEM System über eine Ethernetverbindung mit Hilfe des Moduls &#039;&#039;&#039;[[ModbusAttr]]&#039;&#039;&#039;. Die Wechselrichter der SE(x)K Serie bis 10KWp (SE3K - SE10K) sind alle sehr ähnlich aufgebaut, so dass diese Anleitung für alle funktionieren sollte.&lt;br /&gt;
&lt;br /&gt;
===Vorbedingungen===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Modifikationen und Logfiles (ca. 100 MByte / Jahr).&lt;br /&gt;
&lt;br /&gt;
===Am Wechselrichter===&lt;br /&gt;
&lt;br /&gt;
Im zugehörigen Menü ist bereits der Port 502 eingestellt. Trotzdem muss dieser noch einmal aktiviert werden, da sonst Modbus TCP nicht aktiv wird.&lt;br /&gt;
Hilfe da zu bietet die Installationsanleitung [1].  &amp;lt;br&amp;gt;&lt;br /&gt;
Es ist möglich, dass es auch nur 10 Minuten aktiv bleibt wenn er nicht angesprochen wird.&lt;br /&gt;
&lt;br /&gt;
==ModbusAttr Device in FHEM ==&lt;br /&gt;
&lt;br /&gt;
in FHEM wird ein ModbusAttr angelegt&amp;lt;pre&amp;gt;&lt;br /&gt;
define SolarEdge ModbusAttr 1 60 192.168.178.36 TCP&lt;br /&gt;
attr SolarEdge dev-h-defPoll 1&lt;br /&gt;
attr SolarEdge dev-h-defShowGet 1&lt;br /&gt;
attr SolarEdge enableControlSet 1&lt;br /&gt;
attr SolarEdge event-on-change-reading .*&lt;br /&gt;
attr SolarEdge event-on-update-reading I_AC_Energy_WH,I_AC_Power,Status&lt;br /&gt;
attr SolarEdge group Energie&lt;br /&gt;
attr SolarEdge maxTimeoutsToReconnect 3&lt;br /&gt;
attr SolarEdge silentReconnect 1&lt;br /&gt;
attr SolarEdge sortUpdate 1&lt;br /&gt;
attr SolarEdge stateFormat {sprintf(&amp;quot;PV: %.2f KW, Eigenverbrauch: %.2f KW, Netz: %.2f KW, Batterie: %.2f KW, Ladestand: %.2f %%&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;I_DC_Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;Eigenverbrauch&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;M_AC_POWER&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;B_Instantaneous_Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;B_State_of_Energy&amp;quot;,0))}&lt;br /&gt;
attr SolarEdge userReadings Eigenverbrauch { sprintf(&amp;quot;%.2f&amp;quot;, ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_DC_Power&#039;,0) - ( ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_POWER&#039;,0) + ReadingsNum (&#039;SolarEdge&#039; ,&#039;B_Instantaneous_Power&#039;,0) ) )}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach können die Modbus Datenpunkte (Register) der vorhandenen SolarEdge Komponenten wie Wechselrichter, Zwischenzähler und Batteriespeicher wie folgt definiert werden.&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Wechselrichter==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40000-len 4&lt;br /&gt;
attr SolarEdge obj-h40000-reading I_SunSpec_ID&lt;br /&gt;
attr SolarEdge obj-h40000-unpack (a4)&lt;br /&gt;
attr SolarEdge obj-h40004-len 16&lt;br /&gt;
attr SolarEdge obj-h40004-reading I_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40004-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40020-len 16&lt;br /&gt;
attr SolarEdge obj-h40020-reading I_Model&lt;br /&gt;
attr SolarEdge obj-h40020-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40044-len 8&lt;br /&gt;
attr SolarEdge obj-h40044-reading I_Version&lt;br /&gt;
attr SolarEdge obj-h40044-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40052-len 16&lt;br /&gt;
attr SolarEdge obj-h40052-reading I_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40052-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40068-reading I_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40069-map 101:SinglePhase, 102:SplitSinglePhase, 103:ThreePhase&lt;br /&gt;
attr SolarEdge obj-h40069-reading I_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40070-reading I_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40071-reading I_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40072-reading I_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40073-reading I_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40074-reading I_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40075-reading I_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40075-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN&lt;br /&gt;
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN&lt;br /&gt;
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN&lt;br /&gt;
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF&lt;br /&gt;
attr SolarEdge obj-h40082-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40083-expr ($val * (10 ** $val[1]))/1000&lt;br /&gt;
attr SolarEdge obj-h40083-len 2&lt;br /&gt;
attr SolarEdge obj-h40083-reading I_AC_Power&lt;br /&gt;
attr SolarEdge obj-h40083-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40085-len 2&lt;br /&gt;
attr SolarEdge obj-h40085-reading I_AC_Frequency&lt;br /&gt;
attr SolarEdge obj-h40085-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40087-len 2&lt;br /&gt;
attr SolarEdge obj-h40087-reading I_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40087-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40089-len 2&lt;br /&gt;
attr SolarEdge obj-h40089-reading I_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40089-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40091-len 2&lt;br /&gt;
attr SolarEdge obj-h40091-reading I_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40091-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40093-len 3&lt;br /&gt;
attr SolarEdge obj-h40093-reading I_AC_Energy_WH&lt;br /&gt;
attr SolarEdge obj-h40093-unpack l&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40096-len 2&lt;br /&gt;
attr SolarEdge obj-h40096-reading I_DC_Current&lt;br /&gt;
attr SolarEdge obj-h40096-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40098-len 2&lt;br /&gt;
attr SolarEdge obj-h40098-reading I_DC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40098-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40100-len 2&lt;br /&gt;
attr SolarEdge obj-h40100-reading I_DC_Power&lt;br /&gt;
attr SolarEdge obj-h40100-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40103-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_Temp_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40103-len 1&lt;br /&gt;
attr SolarEdge obj-h40103-reading I_Temp_Sink&lt;br /&gt;
attr SolarEdge obj-h40103-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40106-reading I_Temp_SF&lt;br /&gt;
attr SolarEdge obj-h40106-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40107-map 1:Off, 2:Sleeping, 3:Starting, 4:On, 5:Throttled, 6:ShuttingDown, 7:Fault, 8:Maintenance&lt;br /&gt;
attr SolarEdge obj-h40107-reading I_Status&lt;br /&gt;
attr SolarEdge obj-h40108-reading I_Status_Vendor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Zwischenzähler==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40123-len 16&lt;br /&gt;
attr SolarEdge obj-h40123-reading M_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40123-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40139-len 16&lt;br /&gt;
attr SolarEdge obj-h40139-reading M_Model&lt;br /&gt;
attr SolarEdge obj-h40139-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40163-len 8&lt;br /&gt;
attr SolarEdge obj-h40163-reading M_Version&lt;br /&gt;
attr SolarEdge obj-h40163-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40171-len 16&lt;br /&gt;
attr SolarEdge obj-h40171-reading M_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40171-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40187-reading M_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40188-map 201:SinglePhase, 202:SplitSinglePhase, 203:StarConnectThreePhase, 204:DeltaConnectThreePhase&lt;br /&gt;
attr SolarEdge obj-h40188-reading M_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40189-reading M_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40190-reading M_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40191-reading M_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40192-reading M_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40193-reading M_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40193-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40194-reading M_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40194-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40195-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40195-reading M_AC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40195-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40196-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40196-reading M_AC_Voltage_A&lt;br /&gt;
attr SolarEdge obj-h40196-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40197-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40197-reading M_AC_Voltage_B&lt;br /&gt;
attr SolarEdge obj-h40197-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40198-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40198-reading M_AC_Voltage_C&lt;br /&gt;
attr SolarEdge obj-h40198-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))/1000&lt;br /&gt;
attr SolarEdge obj-h40206-reading M_AC_POWER&lt;br /&gt;
attr SolarEdge obj-h40206-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))/1000&lt;br /&gt;
attr SolarEdge obj-h40207-reading M_AC_POWER_A&lt;br /&gt;
attr SolarEdge obj-h40207-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))/1000&lt;br /&gt;
attr SolarEdge obj-h40208-reading M_AC_POWER_B&lt;br /&gt;
attr SolarEdge obj-h40208-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))/1000&lt;br /&gt;
attr SolarEdge obj-h40209-reading M_AC_POWER_C&lt;br /&gt;
attr SolarEdge obj-h40209-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40210-reading M_AC_POWER_SF&lt;br /&gt;
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40211-reading M_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40211-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40212-reading M_AC_VA_A&lt;br /&gt;
attr SolarEdge obj-h40212-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40213-reading M_AC_VA_B&lt;br /&gt;
attr SolarEdge obj-h40213-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40214-reading M_AC_VA_C&lt;br /&gt;
attr SolarEdge obj-h40214-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40215-reading M_AC_VA_SF&lt;br /&gt;
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40216-reading M_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40216-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40217-reading M_AC_VAR_A&lt;br /&gt;
attr SolarEdge obj-h40217-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40218-reading M_AC_VAR_B&lt;br /&gt;
attr SolarEdge obj-h40218-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40219-reading M_AC_VAR_C&lt;br /&gt;
attr SolarEdge obj-h40219-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40220-reading M_AC_VAR_SF&lt;br /&gt;
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40221-reading M_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40221-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40222-reading M_AC_PF_A&lt;br /&gt;
attr SolarEdge obj-h40222-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40223-reading M_AC_PF_B&lt;br /&gt;
attr SolarEdge obj-h40223-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40224-reading M_AC_PF_C&lt;br /&gt;
attr SolarEdge obj-h40224-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40225-reading M_AC_PF_SF&lt;br /&gt;
attr SolarEdge obj-h40225-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40226-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_Energy_W_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40226-format %.2f&lt;br /&gt;
attr SolarEdge obj-h40226-len 2&lt;br /&gt;
attr SolarEdge obj-h40226-reading M_Exported&lt;br /&gt;
attr SolarEdge obj-h40226-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40234-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_Energy_W_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40234-format %.2f&lt;br /&gt;
attr SolarEdge obj-h40234-len 2&lt;br /&gt;
attr SolarEdge obj-h40234-reading M_Imported&lt;br /&gt;
attr SolarEdge obj-h40234-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40242-reading M_Energy_W_SF&lt;br /&gt;
attr SolarEdge obj-h40242-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Batteriespeicher==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62720-len 16&lt;br /&gt;
attr SolarEdge obj-h62720-reading B_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h62720-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62736-len 16&lt;br /&gt;
attr SolarEdge obj-h62736-reading B_Model&lt;br /&gt;
attr SolarEdge obj-h62736-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62752-len 8&lt;br /&gt;
attr SolarEdge obj-h62752-reading B_Version&lt;br /&gt;
attr SolarEdge obj-h62752-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h62768-len 16&lt;br /&gt;
attr SolarEdge obj-h62768-reading B_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h62768-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62784-reading B_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h62786-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62786-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62786-len 2&lt;br /&gt;
attr SolarEdge obj-h62786-reading B_Rated_Energy&lt;br /&gt;
attr SolarEdge obj-h62786-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62786-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62788-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62788-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62788-len 2&lt;br /&gt;
attr SolarEdge obj-h62788-reading B_Max_Charge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62788-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62788-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62790-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62790-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62790-len 2&lt;br /&gt;
attr SolarEdge obj-h62790-reading B_Max_Discharge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62790-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62790-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62792-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62792-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62792-len 2&lt;br /&gt;
attr SolarEdge obj-h62792-reading B_Max_Charge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62792-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62792-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62794-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62794-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62794-len 2&lt;br /&gt;
attr SolarEdge obj-h62794-reading B_Max_Discharge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62794-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62794-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62828-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62828-len 2&lt;br /&gt;
attr SolarEdge obj-h62828-reading B_Average_Temperature&lt;br /&gt;
attr SolarEdge obj-h62828-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62828-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62830-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62830-len 2&lt;br /&gt;
attr SolarEdge obj-h62830-reading B_Max_Temperature&lt;br /&gt;
attr SolarEdge obj-h62830-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62830-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62832-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62832-len 2&lt;br /&gt;
attr SolarEdge obj-h62832-reading B_Instantaneous_Voltage&lt;br /&gt;
attr SolarEdge obj-h62832-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62832-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62834-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62834-len 2&lt;br /&gt;
attr SolarEdge obj-h62834-reading B_Instantaneous_Current&lt;br /&gt;
attr SolarEdge obj-h62834-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62834-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62836-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62836-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62836-len 2&lt;br /&gt;
attr SolarEdge obj-h62836-reading B_Instantaneous_Power&lt;br /&gt;
attr SolarEdge obj-h62836-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62836-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62838-len 4&lt;br /&gt;
attr SolarEdge obj-h62838-reading B_Lifetime_Export_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62838-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62838-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62842-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62842-format %s&lt;br /&gt;
attr SolarEdge obj-h62842-len 4&lt;br /&gt;
attr SolarEdge obj-h62842-reading B_Lifetime_Import_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62842-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62842-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62846-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62846-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62846-len 2&lt;br /&gt;
attr SolarEdge obj-h62846-reading B_Max_Energy&lt;br /&gt;
attr SolarEdge obj-h62846-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62846-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62848-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62848-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62848-len 2&lt;br /&gt;
attr SolarEdge obj-h62848-reading B_Available_Energy&lt;br /&gt;
attr SolarEdge obj-h62848-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62848-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62850-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62850-len 2&lt;br /&gt;
attr SolarEdge obj-h62850-reading B_State_of_Health&lt;br /&gt;
attr SolarEdge obj-h62850-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62850-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62852-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62852-len 2&lt;br /&gt;
attr SolarEdge obj-h62852-reading B_State_of_Energy&lt;br /&gt;
attr SolarEdge obj-h62852-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62852-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62854-len 2&lt;br /&gt;
attr SolarEdge obj-h62854-map 0:Off, 1:Standby, 2:Init, 3:Charge, 4:Discharge, 5:Fault, 6:TrickleCharge, 7:Idle&lt;br /&gt;
attr SolarEdge obj-h62854-reading B_Status&lt;br /&gt;
attr SolarEdge obj-h62856-len 2&lt;br /&gt;
attr SolarEdge obj-h62856-reading B_Status_Internal&lt;br /&gt;
attr SolarEdge obj-h62856-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Folgende Datei enthält die entsprechenden Anpassungen an die SolarEdge-Dokumentation, die diesen Attribut-Definitionen zugrunde liegen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FHEM-Solaredge_SunSpec_ModbusAttr.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Weiteres Beispiel einer etwas umfangreicheren Einbindung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internals:&lt;br /&gt;
   BUSY       0&lt;br /&gt;
   DEF        1 30 192.168.178.36 TCP&lt;br /&gt;
   DEST       192.168.178.36:502&lt;br /&gt;
   DeviceName 192.168.178.36:502&lt;br /&gt;
   FD         91&lt;br /&gt;
   INTERVAL   600&lt;br /&gt;
   IODev      KeSolarEdge&lt;br /&gt;
   LASTOPEN   1523044866.65275&lt;br /&gt;
   MODBUSID   1&lt;br /&gt;
   ModuleVersion 3.7.3 - 22.12.2017&lt;br /&gt;
   NAME       KeSolarEdge&lt;br /&gt;
   NOTIFYDEV  global&lt;br /&gt;
   NR         354&lt;br /&gt;
   NTFY_ORDER 50-KeSolarEdge&lt;br /&gt;
   PARTIAL    &lt;br /&gt;
   PROTOCOL   TCP&lt;br /&gt;
   REQUESTHEX 00270000000601039c940001&lt;br /&gt;
   STATE      0 W; 1718 kWh&lt;br /&gt;
   TRIGGERTIME 1523048587.13296&lt;br /&gt;
   TRIGGERTIME_FMT 2018-04-06 23:03:07&lt;br /&gt;
   TYPE       ModbusAttr&lt;br /&gt;
   devioLoglevel 4&lt;br /&gt;
   nextOpenDelay 60&lt;br /&gt;
   QUEUE:&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy       1717.665&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Scale 0&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Val   1717665&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power        0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Scale -32768&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Val  65535&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power        0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Scale -1&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Val  0&lt;br /&gt;
     2018-04-06 22:53:07   HeatSinkTemp    0&lt;br /&gt;
     2018-04-06 22:53:07   Status          2&lt;br /&gt;
     2018-04-06 22:53:07   Zustand         Nachtmodus&lt;br /&gt;
     2018-04-06 22:01:06   state           opened&lt;br /&gt;
   defptr:&lt;br /&gt;
     1:&lt;br /&gt;
   gotReadings:&lt;br /&gt;
     AC-Power-Scale 0&lt;br /&gt;
   helper:&lt;br /&gt;
     buffer     &lt;br /&gt;
     lid        1&lt;br /&gt;
     lrecv      1523048290.49688&lt;br /&gt;
     lsend      1523048290.48976&lt;br /&gt;
   lastRead:&lt;br /&gt;
     h40083     1523048290.48193&lt;br /&gt;
     h40084     1523048290.50143&lt;br /&gt;
     h40093     1523047987.08669&lt;br /&gt;
     h40095     1523047987.09043&lt;br /&gt;
     h40096     1523047987.09428&lt;br /&gt;
     h40097     1523047987.09784&lt;br /&gt;
     h40098     1523047987.10153&lt;br /&gt;
     h40099     1523047987.10505&lt;br /&gt;
     h40100     1523047987.10867&lt;br /&gt;
     h40101     1523047987.11226&lt;br /&gt;
     h40103     1523047987.1158&lt;br /&gt;
     h40107     1523047987.11994&lt;br /&gt;
Attributes:&lt;br /&gt;
   dev-h-combine 200&lt;br /&gt;
   dev-h-defPoll 1&lt;br /&gt;
   dev-h-defShowGet 1&lt;br /&gt;
   enableControlSet 1&lt;br /&gt;
   event-on-change-reading .*&lt;br /&gt;
   event-on-update-reading AC-Energy,AC-Energy-Scale,AC-Power-Scale,DC-Voltage-Scale,DC-Current-Scale,DC-Power-Scale,Status&lt;br /&gt;
   maxTimeoutsToReconnect 3&lt;br /&gt;
   obj-h40083-reading AC-Power-Val&lt;br /&gt;
   obj-h40084-reading AC-Power-Scale&lt;br /&gt;
   obj-h40084-unpack s&amp;gt;&lt;br /&gt;
   obj-h40093-len 2&lt;br /&gt;
   obj-h40093-reading AC-Energy-Val&lt;br /&gt;
   obj-h40093-unpack l&amp;gt;&lt;br /&gt;
   obj-h40095-reading AC-Energy-Scale&lt;br /&gt;
   obj-h40096-reading DC-Current-Val&lt;br /&gt;
   obj-h40097-reading DC-Current-Scale&lt;br /&gt;
   obj-h40097-unpack s&amp;gt;&lt;br /&gt;
   obj-h40098-reading DC-Voltage-Val&lt;br /&gt;
   obj-h40099-reading DC-Voltage-Scale&lt;br /&gt;
   obj-h40099-unpack s&amp;gt;&lt;br /&gt;
   obj-h40100-reading DC-Power-Val&lt;br /&gt;
   obj-h40101-reading DC-Power-Scale&lt;br /&gt;
   obj-h40101-unpack s&amp;gt;&lt;br /&gt;
   obj-h40103-reading HeatSinkTemp&lt;br /&gt;
   obj-h40103-unpack s&amp;gt;&lt;br /&gt;
   obj-h40107-reading Status&lt;br /&gt;
   room       Solar,SolarPV,SolarReport&lt;br /&gt;
   silentReconnect 1&lt;br /&gt;
   sortUpdate 1&lt;br /&gt;
   stateFormat {sprintf(&amp;quot;%.0f W; %.0f kWh&amp;quot;,ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0))}&lt;br /&gt;
   userReadings AC-Energy:(AC-Energy-Scale.*) { &lt;br /&gt;
  my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Scale&amp;quot;,0);&lt;br /&gt;
  return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Val&amp;quot;,0) * ( 10 ** $scale) / 1000);;},&lt;br /&gt;
  &lt;br /&gt;
AC-Power:(AC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
&lt;br /&gt;
DC-Power:(DC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Current:(DC-Current-Scale.*) {&lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Voltage:(DC-Voltage-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
 &lt;br /&gt;
Zustand:(Status.*) {&lt;br /&gt;
   my $Zus = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Status&amp;quot;,0);&lt;br /&gt;
   my $rueck = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Zustand&amp;quot;,0);&lt;br /&gt;
   if (($Zus == 2) and (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 600)) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 600&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Nachtmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   elsif  (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 60) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 60&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Tagmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   return ($rueck);;&lt;br /&gt;
 }&lt;br /&gt;
   webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;Solaredge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Dummy]] Devices anlegen===&lt;br /&gt;
Zur Verwendung der &amp;quot;at&amp;quot;s werden Dummys benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dum_pv_energyday_log dummy &lt;br /&gt;
define dum_pv_energyday_read dummy &lt;br /&gt;
define dum_pv_energymonth_log dummy &lt;br /&gt;
define dum_pv_energymonth_read dummy&lt;br /&gt;
define dum_pv_energytoday dummy&lt;br /&gt;
define dum_pv_energytomonth dummy&lt;br /&gt;
define dum_pv_energytoweek dummy&lt;br /&gt;
define dum_pv_energytoyear dummy&lt;br /&gt;
define dum_pv_energyweek_log dummy&lt;br /&gt;
define dum_pv_energyweek_read dummy&lt;br /&gt;
define dum_pv_energyyear_log dummy&lt;br /&gt;
define dum_pv_energyyear_read dummy&lt;br /&gt;
define dum_pvdcpower dummy&lt;br /&gt;
define dum_pvdcvolt dummy&lt;br /&gt;
define dum_pvenergy dummy&lt;br /&gt;
define dum_pvloss dummy&lt;br /&gt;
define dum_pvpower_log dummy &lt;br /&gt;
define dum_pvpower_read dummy &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[notify]] device in FHEM ===&lt;br /&gt;
Auslesen der Daten, getriggert vom ModbusAttr:&lt;br /&gt;
&lt;br /&gt;
prg_solaredge&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
KeSolarEdge:DC-Power:.* {&lt;br /&gt;
  # 16.2.2018 Markus Loeben&lt;br /&gt;
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können&lt;br /&gt;
  my $ACE = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: ACE &amp;quot; . $ACE;&lt;br /&gt;
  my $day = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $week = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $month = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: month &amp;quot; . $month;&lt;br /&gt;
  my $year = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: year &amp;quot; . $year;&lt;br /&gt;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -&amp;gt; laufende Werte berechnen&lt;br /&gt;
  if ($ACE &amp;gt; 0) {&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoday &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $day)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoweek &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $week)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytomonth &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $month)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoyear &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $year)));&lt;br /&gt;
  }&lt;br /&gt;
  #Log 1, &amp;quot;at_Solaredge: PV-Energy &amp;quot; . $ACE . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  #Leistung auslesen&lt;br /&gt;
  my $ACP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0);&lt;br /&gt;
  my $DCP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0);&lt;br /&gt;
  if ($DCP &amp;gt; 0) {&lt;br /&gt;
  # Verlustleistung berechnen&lt;br /&gt;
    fhem (&amp;quot;set dum_pvloss &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;, ($DCP - $ACP)));&lt;br /&gt;
    my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
    #Falls die größer ist als alles bis: ablegen&lt;br /&gt;
    if ($DCP &amp;gt; $MP) {&lt;br /&gt;
      fhem (&amp;quot;set dum_pv_power_read &amp;quot; . $DCP);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[at]] device in FHEM===&lt;br /&gt;
Tägliches Auswerten für spätere SVGs:&lt;br /&gt;
&lt;br /&gt;
at_midnight&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
*23:59 {&lt;br /&gt;
  # Abspeichern der täglichen, wöchentlichen und monatlichen Werte 16.3.18 Loeben;&lt;br /&gt;
  use Time::Local;&lt;br /&gt;
  my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime(time()+61);&lt;br /&gt;
  #Werte einlesen&lt;br /&gt;
  my $ace = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,-1);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight AC-Energy&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  #Tag updaten&lt;br /&gt;
  # PV&lt;br /&gt;
  my $aceread = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read &amp;quot; . $aceread;&lt;br /&gt;
  my $aceday = ($ace - $aceread);&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_read &amp;quot; . $ace);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_log &amp;quot; . $MP);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_read 0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  #Wochenwerte speichern;&lt;br /&gt;
  if ($Pwday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($ace - $aceread)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_read &amp;quot; . $ace);&lt;br /&gt;
  }  &lt;br /&gt;
  #Monatswerte speichern;&lt;br /&gt;
  if ($Pmday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
  #Jahreswerte speichern;&lt;br /&gt;
  if ($Pyday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
&lt;br /&gt;
Das ModbusDevice legt sich ein eigenes Log an. Um aber übersichtliche Grafiken zu bekommen werden die Daten des Dummy benötigt. Hier hilft ein Logfile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; define FileLog_KePv Filelog %L/pv-%Y.log dum_pv*.* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grafiken==&lt;br /&gt;
&lt;br /&gt;
{{Todo | Beschreibungen zu SVG hinterlegen }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/se-inverter-installation-guide-de.pdf Installationsanleitung]&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note-de.pdf Sunspec Protokoll]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38515</id>
		<title>SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38515"/>
		<updated>2023-07-22T15:58:24Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* ModbusAttr Device in FHEM */ stateFormat geändert, userReading für Eigenverbrauch hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=SolarEdgeSE8K.jpg&lt;br /&gt;
|Bildbeschreibung=SolarEdge Wechselrichter&lt;br /&gt;
|HWProtocol=Modubus TCP &lt;br /&gt;
|HWType=Wechselrichter&lt;br /&gt;
|HWCategory=Energieverbrauchsmessung&lt;br /&gt;
|HWComm=Ethernet TCP&lt;br /&gt;
|HWChannels=1 (bidiektional)&lt;br /&gt;
|HWVoltage=750V DC; 230V 3xAC&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch 2% (geschätzt)&lt;br /&gt;
|HWPoweredBy=230V~ 3xAC&lt;br /&gt;
|HWSize=317x512x214 (mm)&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#ModbusAttr ModbusAttr]&lt;br /&gt;
|HWManufacturer=[https://www.solaredge.com/de Solaredge]&lt;br /&gt;
}}&lt;br /&gt;
== Wechselrichter von SolarEdge in FHEM einbinden==&lt;br /&gt;
Dieser Artikel beschreibt die Einbindung von SolarEdge Wechselrichtern der Serie SE(x)K in ein FHEM System über eine Ethernetverbindung mit Hilfe des Moduls &#039;&#039;&#039;[[ModbusAttr]]&#039;&#039;&#039;. Die Wechselrichter der SE(x)K Serie bis 10KWp (SE3K - SE10K) sind alle sehr ähnlich aufgebaut, so dass diese Anleitung für alle funktionieren sollte.&lt;br /&gt;
&lt;br /&gt;
===Vorbedingungen===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Modifikationen und Logfiles (ca. 100 MByte / Jahr).&lt;br /&gt;
&lt;br /&gt;
===Am Wechselrichter===&lt;br /&gt;
&lt;br /&gt;
Im zugehörigen Menü ist bereits der Port 502 eingestellt. Trotzdem muss dieser noch einmal aktiviert werden, da sonst Modbus TCP nicht aktiv wird.&lt;br /&gt;
Hilfe da zu bietet die Installationsanleitung [1].  &amp;lt;br&amp;gt;&lt;br /&gt;
Es ist möglich, dass es auch nur 10 Minuten aktiv bleibt wenn er nicht angesprochen wird.&lt;br /&gt;
&lt;br /&gt;
==ModbusAttr Device in FHEM ==&lt;br /&gt;
&lt;br /&gt;
in FHEM wird ein ModbusAttr angelegt&amp;lt;pre&amp;gt;&lt;br /&gt;
define SolarEdge ModbusAttr 1 60 192.168.178.36 TCP&lt;br /&gt;
attr SolarEdge dev-h-defPoll 1&lt;br /&gt;
attr SolarEdge dev-h-defShowGet 1&lt;br /&gt;
attr SolarEdge enableControlSet 1&lt;br /&gt;
attr SolarEdge event-on-change-reading .*&lt;br /&gt;
attr SolarEdge event-on-update-reading AC-Energy,AC-Power,Status&lt;br /&gt;
attr SolarEdge group Energie&lt;br /&gt;
attr SolarEdge maxTimeoutsToReconnect 3&lt;br /&gt;
attr SolarEdge silentReconnect 1&lt;br /&gt;
attr SolarEdge sortUpdate 1&lt;br /&gt;
attr SolarEdge stateFormat {sprintf(&amp;quot;PV: %.2f KW, Eigenverbrauch: %.2f KW, Netz: %.2f KW, Batterie: %.2f KW, Ladestand: %.2f %%&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Power-Int-Use&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;M_AC_POWER&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;B_Instantaneous_Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;B_State_of_Energy&amp;quot;,0))}&lt;br /&gt;
attr SolarEdge userReadings AC-Power-Int-Use { sprintf(&amp;quot;%.2f&amp;quot;, ReadingsNum (&#039;SolarEdge&#039; ,&#039;DC-Power&#039;,0) - ( ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_POWER&#039;,0) + ReadingsNum (&#039;SolarEdge&#039; ,&#039;B_Instantaneous_Power&#039;,0) ) )}&lt;br /&gt;
attr SolarEdge webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach können die Modbus Datenpunkte (Register) der vorhandenen SolarEdge Komponenten wie Wechselrichter, Zwischenzähler und Batteriespeicher wie folgt definiert werden.&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Wechselrichter==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40000-len 4&lt;br /&gt;
attr SolarEdge obj-h40000-reading I_SunSpec_ID&lt;br /&gt;
attr SolarEdge obj-h40000-unpack (a4)&lt;br /&gt;
attr SolarEdge obj-h40004-len 16&lt;br /&gt;
attr SolarEdge obj-h40004-reading I_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40004-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40020-len 16&lt;br /&gt;
attr SolarEdge obj-h40020-reading I_Model&lt;br /&gt;
attr SolarEdge obj-h40020-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40044-len 8&lt;br /&gt;
attr SolarEdge obj-h40044-reading I_Version&lt;br /&gt;
attr SolarEdge obj-h40044-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40052-len 16&lt;br /&gt;
attr SolarEdge obj-h40052-reading I_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40052-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40068-reading I_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40069-map 101:SinglePhase, 102:SplitSinglePhase, 103:ThreePhase&lt;br /&gt;
attr SolarEdge obj-h40069-reading I_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40070-reading I_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40071-reading I_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40072-reading I_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40073-reading I_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40074-reading I_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40075-reading I_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40075-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN&lt;br /&gt;
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN&lt;br /&gt;
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN&lt;br /&gt;
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF&lt;br /&gt;
attr SolarEdge obj-h40082-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40083-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40083-len 2&lt;br /&gt;
attr SolarEdge obj-h40083-reading AC-Power&lt;br /&gt;
attr SolarEdge obj-h40083-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40085-len 2&lt;br /&gt;
attr SolarEdge obj-h40085-reading I_AC_Frequency&lt;br /&gt;
attr SolarEdge obj-h40085-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40087-len 2&lt;br /&gt;
attr SolarEdge obj-h40087-reading I_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40087-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40089-len 2&lt;br /&gt;
attr SolarEdge obj-h40089-reading I_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40089-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40091-len 2&lt;br /&gt;
attr SolarEdge obj-h40091-reading I_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40091-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40093-len 3&lt;br /&gt;
attr SolarEdge obj-h40093-reading AC-Energy&lt;br /&gt;
attr SolarEdge obj-h40093-unpack l&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40096-len 2&lt;br /&gt;
attr SolarEdge obj-h40096-reading DC-Current&lt;br /&gt;
attr SolarEdge obj-h40096-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40098-len 2&lt;br /&gt;
attr SolarEdge obj-h40098-reading DC-Voltage&lt;br /&gt;
attr SolarEdge obj-h40098-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40100-len 2&lt;br /&gt;
attr SolarEdge obj-h40100-reading DC-Power&lt;br /&gt;
attr SolarEdge obj-h40100-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40103-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_Temp_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40103-len 1&lt;br /&gt;
attr SolarEdge obj-h40103-reading I_Temp_Sink&lt;br /&gt;
attr SolarEdge obj-h40103-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40106-reading I_Temp_SF&lt;br /&gt;
attr SolarEdge obj-h40106-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40107-reading I_Status&lt;br /&gt;
attr SolarEdge obj-h40107-map 1:Off, 2:Sleeping, 3:Starting, 4:On, 5:Throttled, 6:ShuttingDown, 7:Fault, 8:Maintenance&lt;br /&gt;
attr SolarEdge obj-h40108-reading I_Status_Vendor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Zwischenzähler==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40123-len 16&lt;br /&gt;
attr SolarEdge obj-h40123-reading M_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40123-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40139-len 16&lt;br /&gt;
attr SolarEdge obj-h40139-reading M_Model&lt;br /&gt;
attr SolarEdge obj-h40139-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40163-len 8&lt;br /&gt;
attr SolarEdge obj-h40163-reading M_Version&lt;br /&gt;
attr SolarEdge obj-h40163-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40171-len 16&lt;br /&gt;
attr SolarEdge obj-h40171-reading M_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40171-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40187-reading M_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40188-map 201:SinglePhase, 202:SplitSinglePhase, 203:StarConnectThreePhase, 204:DeltaConnectThreePhase&lt;br /&gt;
attr SolarEdge obj-h40188-reading M_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40189-reading M_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40190-reading M_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40191-reading M_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40192-reading M_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40193-reading M_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40193-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40194-reading M_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40194-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40195-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40195-reading M_AC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40195-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40196-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40196-reading M_AC_Voltage_A&lt;br /&gt;
attr SolarEdge obj-h40196-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40197-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40197-reading M_AC_Voltage_B&lt;br /&gt;
attr SolarEdge obj-h40197-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40198-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40198-reading M_AC_Voltage_C&lt;br /&gt;
attr SolarEdge obj-h40198-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40206-reading M_AC_POWER&lt;br /&gt;
attr SolarEdge obj-h40206-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40207-reading M_AC_POWER_A&lt;br /&gt;
attr SolarEdge obj-h40207-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40208-reading M_AC_POWER_B&lt;br /&gt;
attr SolarEdge obj-h40208-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40209-reading M_AC_POWER_C&lt;br /&gt;
attr SolarEdge obj-h40209-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40210-reading M_AC_POWER_SF&lt;br /&gt;
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40211-reading M_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40211-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40212-reading M_AC_VA_A&lt;br /&gt;
attr SolarEdge obj-h40212-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40213-reading M_AC_VA_B&lt;br /&gt;
attr SolarEdge obj-h40213-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40214-reading M_AC_VA_C&lt;br /&gt;
attr SolarEdge obj-h40214-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40215-reading M_AC_VA_SF&lt;br /&gt;
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40216-reading M_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40216-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40217-reading M_AC_VAR_A&lt;br /&gt;
attr SolarEdge obj-h40217-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40218-reading M_AC_VAR_B&lt;br /&gt;
attr SolarEdge obj-h40218-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40219-reading M_AC_VAR_C&lt;br /&gt;
attr SolarEdge obj-h40219-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40220-reading M_AC_VAR_SF&lt;br /&gt;
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40221-reading M_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40221-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40222-reading M_AC_PF_A&lt;br /&gt;
attr SolarEdge obj-h40222-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40223-reading M_AC_PF_B&lt;br /&gt;
attr SolarEdge obj-h40223-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40224-reading M_AC_PF_C&lt;br /&gt;
attr SolarEdge obj-h40224-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40225-reading M_AC_PF_SF&lt;br /&gt;
attr SolarEdge obj-h40225-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Batteriespeicher==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62720-len 16&lt;br /&gt;
attr SolarEdge obj-h62720-reading B_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h62720-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62736-len 16&lt;br /&gt;
attr SolarEdge obj-h62736-reading B_Model&lt;br /&gt;
attr SolarEdge obj-h62736-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62752-len 8&lt;br /&gt;
attr SolarEdge obj-h62752-reading B_Version&lt;br /&gt;
attr SolarEdge obj-h62752-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h62768-len 16&lt;br /&gt;
attr SolarEdge obj-h62768-reading B_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h62768-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62784-reading B_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h62786-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62786-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62786-len 2&lt;br /&gt;
attr SolarEdge obj-h62786-reading B_Rated_Energy&lt;br /&gt;
attr SolarEdge obj-h62786-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62786-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62788-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62788-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62788-len 2&lt;br /&gt;
attr SolarEdge obj-h62788-reading B_Max_Charge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62788-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62788-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62790-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62790-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62790-len 2&lt;br /&gt;
attr SolarEdge obj-h62790-reading B_Max_Discharge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62790-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62790-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62792-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62792-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62792-len 2&lt;br /&gt;
attr SolarEdge obj-h62792-reading B_Max_Charge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62792-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62792-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62794-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62794-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62794-len 2&lt;br /&gt;
attr SolarEdge obj-h62794-reading B_Max_Discharge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62794-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62794-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62828-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62828-len 2&lt;br /&gt;
attr SolarEdge obj-h62828-reading B_Average_Temperature&lt;br /&gt;
attr SolarEdge obj-h62828-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62828-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62830-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62830-len 2&lt;br /&gt;
attr SolarEdge obj-h62830-reading B_Max_Temperature&lt;br /&gt;
attr SolarEdge obj-h62830-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62830-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62832-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62832-len 2&lt;br /&gt;
attr SolarEdge obj-h62832-reading B_Instantaneous_Voltage&lt;br /&gt;
attr SolarEdge obj-h62832-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62832-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62834-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62834-len 2&lt;br /&gt;
attr SolarEdge obj-h62834-reading B_Instantaneous_Current&lt;br /&gt;
attr SolarEdge obj-h62834-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62834-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62836-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62836-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62836-len 2&lt;br /&gt;
attr SolarEdge obj-h62836-reading B_Instantaneous_Power&lt;br /&gt;
attr SolarEdge obj-h62836-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62836-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62838-len 4&lt;br /&gt;
attr SolarEdge obj-h62838-reading B_Lifetime_Export_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62838-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62838-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62842-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62842-format %s&lt;br /&gt;
attr SolarEdge obj-h62842-len 4&lt;br /&gt;
attr SolarEdge obj-h62842-reading B_Lifetime_Import_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62842-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62842-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62846-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62846-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62846-len 2&lt;br /&gt;
attr SolarEdge obj-h62846-reading B_Max_Energy&lt;br /&gt;
attr SolarEdge obj-h62846-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62846-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62848-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62848-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62848-len 2&lt;br /&gt;
attr SolarEdge obj-h62848-reading B_Available_Energy&lt;br /&gt;
attr SolarEdge obj-h62848-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62848-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62850-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62850-len 2&lt;br /&gt;
attr SolarEdge obj-h62850-reading B_State_of_Health&lt;br /&gt;
attr SolarEdge obj-h62850-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62850-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62852-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62852-len 2&lt;br /&gt;
attr SolarEdge obj-h62852-reading B_State_of_Energy&lt;br /&gt;
attr SolarEdge obj-h62852-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62852-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62854-len 2&lt;br /&gt;
attr SolarEdge obj-h62854-map 0:Off, 1:Standby, 2:Init, 3:Charge, 4:Discharge, 5:Fault, 6:TrickleCharge, 7:Idle&lt;br /&gt;
attr SolarEdge obj-h62854-reading B_Status&lt;br /&gt;
attr SolarEdge obj-h62856-len 2&lt;br /&gt;
attr SolarEdge obj-h62856-reading B_Status_Internal&lt;br /&gt;
attr SolarEdge obj-h62856-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Folgende Datei enthält die entsprechenden Anpassungen an die SolarEdge-Dokumentation, die diesen Attribut-Definitionen zugrunde liegen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FHEM-Solaredge_SunSpec_ModbusAttr.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Weiteres Beispiel einer etwas umfangreicheren Einbindung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internals:&lt;br /&gt;
   BUSY       0&lt;br /&gt;
   DEF        1 30 192.168.178.36 TCP&lt;br /&gt;
   DEST       192.168.178.36:502&lt;br /&gt;
   DeviceName 192.168.178.36:502&lt;br /&gt;
   FD         91&lt;br /&gt;
   INTERVAL   600&lt;br /&gt;
   IODev      KeSolarEdge&lt;br /&gt;
   LASTOPEN   1523044866.65275&lt;br /&gt;
   MODBUSID   1&lt;br /&gt;
   ModuleVersion 3.7.3 - 22.12.2017&lt;br /&gt;
   NAME       KeSolarEdge&lt;br /&gt;
   NOTIFYDEV  global&lt;br /&gt;
   NR         354&lt;br /&gt;
   NTFY_ORDER 50-KeSolarEdge&lt;br /&gt;
   PARTIAL    &lt;br /&gt;
   PROTOCOL   TCP&lt;br /&gt;
   REQUESTHEX 00270000000601039c940001&lt;br /&gt;
   STATE      0 W; 1718 kWh&lt;br /&gt;
   TRIGGERTIME 1523048587.13296&lt;br /&gt;
   TRIGGERTIME_FMT 2018-04-06 23:03:07&lt;br /&gt;
   TYPE       ModbusAttr&lt;br /&gt;
   devioLoglevel 4&lt;br /&gt;
   nextOpenDelay 60&lt;br /&gt;
   QUEUE:&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy       1717.665&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Scale 0&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Val   1717665&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power        0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Scale -32768&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Val  65535&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power        0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Scale -1&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Val  0&lt;br /&gt;
     2018-04-06 22:53:07   HeatSinkTemp    0&lt;br /&gt;
     2018-04-06 22:53:07   Status          2&lt;br /&gt;
     2018-04-06 22:53:07   Zustand         Nachtmodus&lt;br /&gt;
     2018-04-06 22:01:06   state           opened&lt;br /&gt;
   defptr:&lt;br /&gt;
     1:&lt;br /&gt;
   gotReadings:&lt;br /&gt;
     AC-Power-Scale 0&lt;br /&gt;
   helper:&lt;br /&gt;
     buffer     &lt;br /&gt;
     lid        1&lt;br /&gt;
     lrecv      1523048290.49688&lt;br /&gt;
     lsend      1523048290.48976&lt;br /&gt;
   lastRead:&lt;br /&gt;
     h40083     1523048290.48193&lt;br /&gt;
     h40084     1523048290.50143&lt;br /&gt;
     h40093     1523047987.08669&lt;br /&gt;
     h40095     1523047987.09043&lt;br /&gt;
     h40096     1523047987.09428&lt;br /&gt;
     h40097     1523047987.09784&lt;br /&gt;
     h40098     1523047987.10153&lt;br /&gt;
     h40099     1523047987.10505&lt;br /&gt;
     h40100     1523047987.10867&lt;br /&gt;
     h40101     1523047987.11226&lt;br /&gt;
     h40103     1523047987.1158&lt;br /&gt;
     h40107     1523047987.11994&lt;br /&gt;
Attributes:&lt;br /&gt;
   dev-h-combine 200&lt;br /&gt;
   dev-h-defPoll 1&lt;br /&gt;
   dev-h-defShowGet 1&lt;br /&gt;
   enableControlSet 1&lt;br /&gt;
   event-on-change-reading .*&lt;br /&gt;
   event-on-update-reading AC-Energy,AC-Energy-Scale,AC-Power-Scale,DC-Voltage-Scale,DC-Current-Scale,DC-Power-Scale,Status&lt;br /&gt;
   maxTimeoutsToReconnect 3&lt;br /&gt;
   obj-h40083-reading AC-Power-Val&lt;br /&gt;
   obj-h40084-reading AC-Power-Scale&lt;br /&gt;
   obj-h40084-unpack s&amp;gt;&lt;br /&gt;
   obj-h40093-len 2&lt;br /&gt;
   obj-h40093-reading AC-Energy-Val&lt;br /&gt;
   obj-h40093-unpack l&amp;gt;&lt;br /&gt;
   obj-h40095-reading AC-Energy-Scale&lt;br /&gt;
   obj-h40096-reading DC-Current-Val&lt;br /&gt;
   obj-h40097-reading DC-Current-Scale&lt;br /&gt;
   obj-h40097-unpack s&amp;gt;&lt;br /&gt;
   obj-h40098-reading DC-Voltage-Val&lt;br /&gt;
   obj-h40099-reading DC-Voltage-Scale&lt;br /&gt;
   obj-h40099-unpack s&amp;gt;&lt;br /&gt;
   obj-h40100-reading DC-Power-Val&lt;br /&gt;
   obj-h40101-reading DC-Power-Scale&lt;br /&gt;
   obj-h40101-unpack s&amp;gt;&lt;br /&gt;
   obj-h40103-reading HeatSinkTemp&lt;br /&gt;
   obj-h40103-unpack s&amp;gt;&lt;br /&gt;
   obj-h40107-reading Status&lt;br /&gt;
   room       Solar,SolarPV,SolarReport&lt;br /&gt;
   silentReconnect 1&lt;br /&gt;
   sortUpdate 1&lt;br /&gt;
   stateFormat {sprintf(&amp;quot;%.0f W; %.0f kWh&amp;quot;,ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0))}&lt;br /&gt;
   userReadings AC-Energy:(AC-Energy-Scale.*) { &lt;br /&gt;
  my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Scale&amp;quot;,0);&lt;br /&gt;
  return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Val&amp;quot;,0) * ( 10 ** $scale) / 1000);;},&lt;br /&gt;
  &lt;br /&gt;
AC-Power:(AC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
&lt;br /&gt;
DC-Power:(DC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Current:(DC-Current-Scale.*) {&lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Voltage:(DC-Voltage-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
 &lt;br /&gt;
Zustand:(Status.*) {&lt;br /&gt;
   my $Zus = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Status&amp;quot;,0);&lt;br /&gt;
   my $rueck = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Zustand&amp;quot;,0);&lt;br /&gt;
   if (($Zus == 2) and (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 600)) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 600&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Nachtmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   elsif  (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 60) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 60&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Tagmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   return ($rueck);;&lt;br /&gt;
 }&lt;br /&gt;
   webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;Solaredge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Dummy]] Devices anlegen===&lt;br /&gt;
Zur Verwendung der &amp;quot;at&amp;quot;s werden Dummys benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dum_pv_energyday_log dummy &lt;br /&gt;
define dum_pv_energyday_read dummy &lt;br /&gt;
define dum_pv_energymonth_log dummy &lt;br /&gt;
define dum_pv_energymonth_read dummy&lt;br /&gt;
define dum_pv_energytoday dummy&lt;br /&gt;
define dum_pv_energytomonth dummy&lt;br /&gt;
define dum_pv_energytoweek dummy&lt;br /&gt;
define dum_pv_energytoyear dummy&lt;br /&gt;
define dum_pv_energyweek_log dummy&lt;br /&gt;
define dum_pv_energyweek_read dummy&lt;br /&gt;
define dum_pv_energyyear_log dummy&lt;br /&gt;
define dum_pv_energyyear_read dummy&lt;br /&gt;
define dum_pvdcpower dummy&lt;br /&gt;
define dum_pvdcvolt dummy&lt;br /&gt;
define dum_pvenergy dummy&lt;br /&gt;
define dum_pvloss dummy&lt;br /&gt;
define dum_pvpower_log dummy &lt;br /&gt;
define dum_pvpower_read dummy &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[notify]] device in FHEM ===&lt;br /&gt;
Auslesen der Daten, getriggert vom ModbusAttr:&lt;br /&gt;
&lt;br /&gt;
prg_solaredge&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
KeSolarEdge:DC-Power:.* {&lt;br /&gt;
  # 16.2.2018 Markus Loeben&lt;br /&gt;
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können&lt;br /&gt;
  my $ACE = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: ACE &amp;quot; . $ACE;&lt;br /&gt;
  my $day = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $week = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $month = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: month &amp;quot; . $month;&lt;br /&gt;
  my $year = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: year &amp;quot; . $year;&lt;br /&gt;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -&amp;gt; laufende Werte berechnen&lt;br /&gt;
  if ($ACE &amp;gt; 0) {&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoday &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $day)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoweek &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $week)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytomonth &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $month)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoyear &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $year)));&lt;br /&gt;
  }&lt;br /&gt;
  #Log 1, &amp;quot;at_Solaredge: PV-Energy &amp;quot; . $ACE . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  #Leistung auslesen&lt;br /&gt;
  my $ACP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0);&lt;br /&gt;
  my $DCP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0);&lt;br /&gt;
  if ($DCP &amp;gt; 0) {&lt;br /&gt;
  # Verlustleistung berechnen&lt;br /&gt;
    fhem (&amp;quot;set dum_pvloss &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;, ($DCP - $ACP)));&lt;br /&gt;
    my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
    #Falls die größer ist als alles bis: ablegen&lt;br /&gt;
    if ($DCP &amp;gt; $MP) {&lt;br /&gt;
      fhem (&amp;quot;set dum_pv_power_read &amp;quot; . $DCP);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[at]] device in FHEM===&lt;br /&gt;
Tägliches Auswerten für spätere SVGs:&lt;br /&gt;
&lt;br /&gt;
at_midnight&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
*23:59 {&lt;br /&gt;
  # Abspeichern der täglichen, wöchentlichen und monatlichen Werte 16.3.18 Loeben;&lt;br /&gt;
  use Time::Local;&lt;br /&gt;
  my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime(time()+61);&lt;br /&gt;
  #Werte einlesen&lt;br /&gt;
  my $ace = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,-1);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight AC-Energy&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  #Tag updaten&lt;br /&gt;
  # PV&lt;br /&gt;
  my $aceread = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read &amp;quot; . $aceread;&lt;br /&gt;
  my $aceday = ($ace - $aceread);&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_read &amp;quot; . $ace);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_log &amp;quot; . $MP);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_read 0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  #Wochenwerte speichern;&lt;br /&gt;
  if ($Pwday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($ace - $aceread)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_read &amp;quot; . $ace);&lt;br /&gt;
  }  &lt;br /&gt;
  #Monatswerte speichern;&lt;br /&gt;
  if ($Pmday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
  #Jahreswerte speichern;&lt;br /&gt;
  if ($Pyday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
&lt;br /&gt;
Das ModbusDevice legt sich ein eigenes Log an. Um aber übersichtliche Grafiken zu bekommen werden die Daten des Dummy benötigt. Hier hilft ein Logfile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; define FileLog_KePv Filelog %L/pv-%Y.log dum_pv*.* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grafiken==&lt;br /&gt;
&lt;br /&gt;
{{Todo | Beschreibungen zu SVG hinterlegen }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/se-inverter-installation-guide-de.pdf Installationsanleitung]&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note-de.pdf Sunspec Protokoll]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38514</id>
		<title>SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38514"/>
		<updated>2023-07-22T15:53:54Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Bild Link korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=SolarEdgeSE8K.jpg&lt;br /&gt;
|Bildbeschreibung=SolarEdge Wechselrichter&lt;br /&gt;
|HWProtocol=Modubus TCP &lt;br /&gt;
|HWType=Wechselrichter&lt;br /&gt;
|HWCategory=Energieverbrauchsmessung&lt;br /&gt;
|HWComm=Ethernet TCP&lt;br /&gt;
|HWChannels=1 (bidiektional)&lt;br /&gt;
|HWVoltage=750V DC; 230V 3xAC&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch 2% (geschätzt)&lt;br /&gt;
|HWPoweredBy=230V~ 3xAC&lt;br /&gt;
|HWSize=317x512x214 (mm)&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#ModbusAttr ModbusAttr]&lt;br /&gt;
|HWManufacturer=[https://www.solaredge.com/de Solaredge]&lt;br /&gt;
}}&lt;br /&gt;
== Wechselrichter von SolarEdge in FHEM einbinden==&lt;br /&gt;
Dieser Artikel beschreibt die Einbindung von SolarEdge Wechselrichtern der Serie SE(x)K in ein FHEM System über eine Ethernetverbindung mit Hilfe des Moduls &#039;&#039;&#039;[[ModbusAttr]]&#039;&#039;&#039;. Die Wechselrichter der SE(x)K Serie bis 10KWp (SE3K - SE10K) sind alle sehr ähnlich aufgebaut, so dass diese Anleitung für alle funktionieren sollte.&lt;br /&gt;
&lt;br /&gt;
===Vorbedingungen===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Modifikationen und Logfiles (ca. 100 MByte / Jahr).&lt;br /&gt;
&lt;br /&gt;
===Am Wechselrichter===&lt;br /&gt;
&lt;br /&gt;
Im zugehörigen Menü ist bereits der Port 502 eingestellt. Trotzdem muss dieser noch einmal aktiviert werden, da sonst Modbus TCP nicht aktiv wird.&lt;br /&gt;
Hilfe da zu bietet die Installationsanleitung [1].  &amp;lt;br&amp;gt;&lt;br /&gt;
Es ist möglich, dass es auch nur 10 Minuten aktiv bleibt wenn er nicht angesprochen wird.&lt;br /&gt;
&lt;br /&gt;
==ModbusAttr Device in FHEM ==&lt;br /&gt;
&lt;br /&gt;
in FHEM wird ein ModbusAttr angelegt&amp;lt;pre&amp;gt;&lt;br /&gt;
define SolarEdge ModbusAttr 1 60 192.168.178.36 TCP&lt;br /&gt;
attr SolarEdge dev-h-defPoll 1&lt;br /&gt;
attr SolarEdge dev-h-defShowGet 1&lt;br /&gt;
attr SolarEdge enableControlSet 1&lt;br /&gt;
attr SolarEdge event-on-change-reading .*&lt;br /&gt;
attr SolarEdge event-on-update-reading AC-Energy,AC-Power,Status&lt;br /&gt;
attr SolarEdge group Energie&lt;br /&gt;
attr SolarEdge maxTimeoutsToReconnect 3&lt;br /&gt;
attr SolarEdge silentReconnect 1&lt;br /&gt;
attr SolarEdge sortUpdate 1&lt;br /&gt;
attr SolarEdge stateFormat {sprintf(&amp;quot;%.0f W-%.0f V-%.0f W&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Voltage&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0))}&lt;br /&gt;
attr SolarEdge webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach können die Modbus Datenpunkte (Register) der vorhandenen SolarEdge Komponenten wie Wechselrichter, Zwischenzähler und Batteriespeicher wie folgt definiert werden.&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Wechselrichter==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40000-len 4&lt;br /&gt;
attr SolarEdge obj-h40000-reading I_SunSpec_ID&lt;br /&gt;
attr SolarEdge obj-h40000-unpack (a4)&lt;br /&gt;
attr SolarEdge obj-h40004-len 16&lt;br /&gt;
attr SolarEdge obj-h40004-reading I_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40004-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40020-len 16&lt;br /&gt;
attr SolarEdge obj-h40020-reading I_Model&lt;br /&gt;
attr SolarEdge obj-h40020-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40044-len 8&lt;br /&gt;
attr SolarEdge obj-h40044-reading I_Version&lt;br /&gt;
attr SolarEdge obj-h40044-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40052-len 16&lt;br /&gt;
attr SolarEdge obj-h40052-reading I_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40052-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40068-reading I_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40069-map 101:SinglePhase, 102:SplitSinglePhase, 103:ThreePhase&lt;br /&gt;
attr SolarEdge obj-h40069-reading I_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40070-reading I_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40071-reading I_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40072-reading I_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40073-reading I_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40074-reading I_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40075-reading I_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40075-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN&lt;br /&gt;
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN&lt;br /&gt;
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN&lt;br /&gt;
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF&lt;br /&gt;
attr SolarEdge obj-h40082-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40083-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40083-len 2&lt;br /&gt;
attr SolarEdge obj-h40083-reading AC-Power&lt;br /&gt;
attr SolarEdge obj-h40083-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40085-len 2&lt;br /&gt;
attr SolarEdge obj-h40085-reading I_AC_Frequency&lt;br /&gt;
attr SolarEdge obj-h40085-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40087-len 2&lt;br /&gt;
attr SolarEdge obj-h40087-reading I_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40087-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40089-len 2&lt;br /&gt;
attr SolarEdge obj-h40089-reading I_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40089-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40091-len 2&lt;br /&gt;
attr SolarEdge obj-h40091-reading I_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40091-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40093-len 3&lt;br /&gt;
attr SolarEdge obj-h40093-reading AC-Energy&lt;br /&gt;
attr SolarEdge obj-h40093-unpack l&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40096-len 2&lt;br /&gt;
attr SolarEdge obj-h40096-reading DC-Current&lt;br /&gt;
attr SolarEdge obj-h40096-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40098-len 2&lt;br /&gt;
attr SolarEdge obj-h40098-reading DC-Voltage&lt;br /&gt;
attr SolarEdge obj-h40098-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40100-len 2&lt;br /&gt;
attr SolarEdge obj-h40100-reading DC-Power&lt;br /&gt;
attr SolarEdge obj-h40100-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40103-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_Temp_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40103-len 1&lt;br /&gt;
attr SolarEdge obj-h40103-reading I_Temp_Sink&lt;br /&gt;
attr SolarEdge obj-h40103-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40106-reading I_Temp_SF&lt;br /&gt;
attr SolarEdge obj-h40106-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40107-reading I_Status&lt;br /&gt;
attr SolarEdge obj-h40107-map 1:Off, 2:Sleeping, 3:Starting, 4:On, 5:Throttled, 6:ShuttingDown, 7:Fault, 8:Maintenance&lt;br /&gt;
attr SolarEdge obj-h40108-reading I_Status_Vendor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Zwischenzähler==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40123-len 16&lt;br /&gt;
attr SolarEdge obj-h40123-reading M_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40123-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40139-len 16&lt;br /&gt;
attr SolarEdge obj-h40139-reading M_Model&lt;br /&gt;
attr SolarEdge obj-h40139-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40163-len 8&lt;br /&gt;
attr SolarEdge obj-h40163-reading M_Version&lt;br /&gt;
attr SolarEdge obj-h40163-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40171-len 16&lt;br /&gt;
attr SolarEdge obj-h40171-reading M_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40171-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40187-reading M_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40188-map 201:SinglePhase, 202:SplitSinglePhase, 203:StarConnectThreePhase, 204:DeltaConnectThreePhase&lt;br /&gt;
attr SolarEdge obj-h40188-reading M_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40189-reading M_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40190-reading M_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40191-reading M_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40192-reading M_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40193-reading M_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40193-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40194-reading M_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40194-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40195-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40195-reading M_AC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40195-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40196-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40196-reading M_AC_Voltage_A&lt;br /&gt;
attr SolarEdge obj-h40196-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40197-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40197-reading M_AC_Voltage_B&lt;br /&gt;
attr SolarEdge obj-h40197-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40198-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40198-reading M_AC_Voltage_C&lt;br /&gt;
attr SolarEdge obj-h40198-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40206-reading M_AC_POWER&lt;br /&gt;
attr SolarEdge obj-h40206-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40207-reading M_AC_POWER_A&lt;br /&gt;
attr SolarEdge obj-h40207-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40208-reading M_AC_POWER_B&lt;br /&gt;
attr SolarEdge obj-h40208-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40209-reading M_AC_POWER_C&lt;br /&gt;
attr SolarEdge obj-h40209-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40210-reading M_AC_POWER_SF&lt;br /&gt;
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40211-reading M_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40211-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40212-reading M_AC_VA_A&lt;br /&gt;
attr SolarEdge obj-h40212-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40213-reading M_AC_VA_B&lt;br /&gt;
attr SolarEdge obj-h40213-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40214-reading M_AC_VA_C&lt;br /&gt;
attr SolarEdge obj-h40214-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40215-reading M_AC_VA_SF&lt;br /&gt;
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40216-reading M_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40216-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40217-reading M_AC_VAR_A&lt;br /&gt;
attr SolarEdge obj-h40217-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40218-reading M_AC_VAR_B&lt;br /&gt;
attr SolarEdge obj-h40218-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40219-reading M_AC_VAR_C&lt;br /&gt;
attr SolarEdge obj-h40219-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40220-reading M_AC_VAR_SF&lt;br /&gt;
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40221-reading M_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40221-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40222-reading M_AC_PF_A&lt;br /&gt;
attr SolarEdge obj-h40222-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40223-reading M_AC_PF_B&lt;br /&gt;
attr SolarEdge obj-h40223-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40224-reading M_AC_PF_C&lt;br /&gt;
attr SolarEdge obj-h40224-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40225-reading M_AC_PF_SF&lt;br /&gt;
attr SolarEdge obj-h40225-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Batteriespeicher==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62720-len 16&lt;br /&gt;
attr SolarEdge obj-h62720-reading B_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h62720-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62736-len 16&lt;br /&gt;
attr SolarEdge obj-h62736-reading B_Model&lt;br /&gt;
attr SolarEdge obj-h62736-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62752-len 8&lt;br /&gt;
attr SolarEdge obj-h62752-reading B_Version&lt;br /&gt;
attr SolarEdge obj-h62752-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h62768-len 16&lt;br /&gt;
attr SolarEdge obj-h62768-reading B_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h62768-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62784-reading B_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h62786-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62786-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62786-len 2&lt;br /&gt;
attr SolarEdge obj-h62786-reading B_Rated_Energy&lt;br /&gt;
attr SolarEdge obj-h62786-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62786-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62788-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62788-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62788-len 2&lt;br /&gt;
attr SolarEdge obj-h62788-reading B_Max_Charge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62788-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62788-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62790-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62790-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62790-len 2&lt;br /&gt;
attr SolarEdge obj-h62790-reading B_Max_Discharge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62790-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62790-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62792-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62792-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62792-len 2&lt;br /&gt;
attr SolarEdge obj-h62792-reading B_Max_Charge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62792-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62792-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62794-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62794-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62794-len 2&lt;br /&gt;
attr SolarEdge obj-h62794-reading B_Max_Discharge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62794-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62794-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62828-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62828-len 2&lt;br /&gt;
attr SolarEdge obj-h62828-reading B_Average_Temperature&lt;br /&gt;
attr SolarEdge obj-h62828-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62828-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62830-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62830-len 2&lt;br /&gt;
attr SolarEdge obj-h62830-reading B_Max_Temperature&lt;br /&gt;
attr SolarEdge obj-h62830-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62830-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62832-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62832-len 2&lt;br /&gt;
attr SolarEdge obj-h62832-reading B_Instantaneous_Voltage&lt;br /&gt;
attr SolarEdge obj-h62832-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62832-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62834-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62834-len 2&lt;br /&gt;
attr SolarEdge obj-h62834-reading B_Instantaneous_Current&lt;br /&gt;
attr SolarEdge obj-h62834-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62834-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62836-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62836-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62836-len 2&lt;br /&gt;
attr SolarEdge obj-h62836-reading B_Instantaneous_Power&lt;br /&gt;
attr SolarEdge obj-h62836-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62836-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62838-len 4&lt;br /&gt;
attr SolarEdge obj-h62838-reading B_Lifetime_Export_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62838-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62838-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62842-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62842-format %s&lt;br /&gt;
attr SolarEdge obj-h62842-len 4&lt;br /&gt;
attr SolarEdge obj-h62842-reading B_Lifetime_Import_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62842-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62842-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62846-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62846-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62846-len 2&lt;br /&gt;
attr SolarEdge obj-h62846-reading B_Max_Energy&lt;br /&gt;
attr SolarEdge obj-h62846-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62846-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62848-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62848-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62848-len 2&lt;br /&gt;
attr SolarEdge obj-h62848-reading B_Available_Energy&lt;br /&gt;
attr SolarEdge obj-h62848-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62848-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62850-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62850-len 2&lt;br /&gt;
attr SolarEdge obj-h62850-reading B_State_of_Health&lt;br /&gt;
attr SolarEdge obj-h62850-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62850-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62852-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62852-len 2&lt;br /&gt;
attr SolarEdge obj-h62852-reading B_State_of_Energy&lt;br /&gt;
attr SolarEdge obj-h62852-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62852-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62854-len 2&lt;br /&gt;
attr SolarEdge obj-h62854-map 0:Off, 1:Standby, 2:Init, 3:Charge, 4:Discharge, 5:Fault, 6:TrickleCharge, 7:Idle&lt;br /&gt;
attr SolarEdge obj-h62854-reading B_Status&lt;br /&gt;
attr SolarEdge obj-h62856-len 2&lt;br /&gt;
attr SolarEdge obj-h62856-reading B_Status_Internal&lt;br /&gt;
attr SolarEdge obj-h62856-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Folgende Datei enthält die entsprechenden Anpassungen an die SolarEdge-Dokumentation, die diesen Attribut-Definitionen zugrunde liegen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FHEM-Solaredge_SunSpec_ModbusAttr.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Weiteres Beispiel einer etwas umfangreicheren Einbindung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internals:&lt;br /&gt;
   BUSY       0&lt;br /&gt;
   DEF        1 30 192.168.178.36 TCP&lt;br /&gt;
   DEST       192.168.178.36:502&lt;br /&gt;
   DeviceName 192.168.178.36:502&lt;br /&gt;
   FD         91&lt;br /&gt;
   INTERVAL   600&lt;br /&gt;
   IODev      KeSolarEdge&lt;br /&gt;
   LASTOPEN   1523044866.65275&lt;br /&gt;
   MODBUSID   1&lt;br /&gt;
   ModuleVersion 3.7.3 - 22.12.2017&lt;br /&gt;
   NAME       KeSolarEdge&lt;br /&gt;
   NOTIFYDEV  global&lt;br /&gt;
   NR         354&lt;br /&gt;
   NTFY_ORDER 50-KeSolarEdge&lt;br /&gt;
   PARTIAL    &lt;br /&gt;
   PROTOCOL   TCP&lt;br /&gt;
   REQUESTHEX 00270000000601039c940001&lt;br /&gt;
   STATE      0 W; 1718 kWh&lt;br /&gt;
   TRIGGERTIME 1523048587.13296&lt;br /&gt;
   TRIGGERTIME_FMT 2018-04-06 23:03:07&lt;br /&gt;
   TYPE       ModbusAttr&lt;br /&gt;
   devioLoglevel 4&lt;br /&gt;
   nextOpenDelay 60&lt;br /&gt;
   QUEUE:&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy       1717.665&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Scale 0&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Val   1717665&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power        0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Scale -32768&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Val  65535&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power        0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Scale -1&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Val  0&lt;br /&gt;
     2018-04-06 22:53:07   HeatSinkTemp    0&lt;br /&gt;
     2018-04-06 22:53:07   Status          2&lt;br /&gt;
     2018-04-06 22:53:07   Zustand         Nachtmodus&lt;br /&gt;
     2018-04-06 22:01:06   state           opened&lt;br /&gt;
   defptr:&lt;br /&gt;
     1:&lt;br /&gt;
   gotReadings:&lt;br /&gt;
     AC-Power-Scale 0&lt;br /&gt;
   helper:&lt;br /&gt;
     buffer     &lt;br /&gt;
     lid        1&lt;br /&gt;
     lrecv      1523048290.49688&lt;br /&gt;
     lsend      1523048290.48976&lt;br /&gt;
   lastRead:&lt;br /&gt;
     h40083     1523048290.48193&lt;br /&gt;
     h40084     1523048290.50143&lt;br /&gt;
     h40093     1523047987.08669&lt;br /&gt;
     h40095     1523047987.09043&lt;br /&gt;
     h40096     1523047987.09428&lt;br /&gt;
     h40097     1523047987.09784&lt;br /&gt;
     h40098     1523047987.10153&lt;br /&gt;
     h40099     1523047987.10505&lt;br /&gt;
     h40100     1523047987.10867&lt;br /&gt;
     h40101     1523047987.11226&lt;br /&gt;
     h40103     1523047987.1158&lt;br /&gt;
     h40107     1523047987.11994&lt;br /&gt;
Attributes:&lt;br /&gt;
   dev-h-combine 200&lt;br /&gt;
   dev-h-defPoll 1&lt;br /&gt;
   dev-h-defShowGet 1&lt;br /&gt;
   enableControlSet 1&lt;br /&gt;
   event-on-change-reading .*&lt;br /&gt;
   event-on-update-reading AC-Energy,AC-Energy-Scale,AC-Power-Scale,DC-Voltage-Scale,DC-Current-Scale,DC-Power-Scale,Status&lt;br /&gt;
   maxTimeoutsToReconnect 3&lt;br /&gt;
   obj-h40083-reading AC-Power-Val&lt;br /&gt;
   obj-h40084-reading AC-Power-Scale&lt;br /&gt;
   obj-h40084-unpack s&amp;gt;&lt;br /&gt;
   obj-h40093-len 2&lt;br /&gt;
   obj-h40093-reading AC-Energy-Val&lt;br /&gt;
   obj-h40093-unpack l&amp;gt;&lt;br /&gt;
   obj-h40095-reading AC-Energy-Scale&lt;br /&gt;
   obj-h40096-reading DC-Current-Val&lt;br /&gt;
   obj-h40097-reading DC-Current-Scale&lt;br /&gt;
   obj-h40097-unpack s&amp;gt;&lt;br /&gt;
   obj-h40098-reading DC-Voltage-Val&lt;br /&gt;
   obj-h40099-reading DC-Voltage-Scale&lt;br /&gt;
   obj-h40099-unpack s&amp;gt;&lt;br /&gt;
   obj-h40100-reading DC-Power-Val&lt;br /&gt;
   obj-h40101-reading DC-Power-Scale&lt;br /&gt;
   obj-h40101-unpack s&amp;gt;&lt;br /&gt;
   obj-h40103-reading HeatSinkTemp&lt;br /&gt;
   obj-h40103-unpack s&amp;gt;&lt;br /&gt;
   obj-h40107-reading Status&lt;br /&gt;
   room       Solar,SolarPV,SolarReport&lt;br /&gt;
   silentReconnect 1&lt;br /&gt;
   sortUpdate 1&lt;br /&gt;
   stateFormat {sprintf(&amp;quot;%.0f W; %.0f kWh&amp;quot;,ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0))}&lt;br /&gt;
   userReadings AC-Energy:(AC-Energy-Scale.*) { &lt;br /&gt;
  my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Scale&amp;quot;,0);&lt;br /&gt;
  return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Val&amp;quot;,0) * ( 10 ** $scale) / 1000);;},&lt;br /&gt;
  &lt;br /&gt;
AC-Power:(AC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
&lt;br /&gt;
DC-Power:(DC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Current:(DC-Current-Scale.*) {&lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Voltage:(DC-Voltage-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
 &lt;br /&gt;
Zustand:(Status.*) {&lt;br /&gt;
   my $Zus = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Status&amp;quot;,0);&lt;br /&gt;
   my $rueck = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Zustand&amp;quot;,0);&lt;br /&gt;
   if (($Zus == 2) and (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 600)) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 600&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Nachtmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   elsif  (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 60) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 60&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Tagmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   return ($rueck);;&lt;br /&gt;
 }&lt;br /&gt;
   webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;Solaredge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Dummy]] Devices anlegen===&lt;br /&gt;
Zur Verwendung der &amp;quot;at&amp;quot;s werden Dummys benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dum_pv_energyday_log dummy &lt;br /&gt;
define dum_pv_energyday_read dummy &lt;br /&gt;
define dum_pv_energymonth_log dummy &lt;br /&gt;
define dum_pv_energymonth_read dummy&lt;br /&gt;
define dum_pv_energytoday dummy&lt;br /&gt;
define dum_pv_energytomonth dummy&lt;br /&gt;
define dum_pv_energytoweek dummy&lt;br /&gt;
define dum_pv_energytoyear dummy&lt;br /&gt;
define dum_pv_energyweek_log dummy&lt;br /&gt;
define dum_pv_energyweek_read dummy&lt;br /&gt;
define dum_pv_energyyear_log dummy&lt;br /&gt;
define dum_pv_energyyear_read dummy&lt;br /&gt;
define dum_pvdcpower dummy&lt;br /&gt;
define dum_pvdcvolt dummy&lt;br /&gt;
define dum_pvenergy dummy&lt;br /&gt;
define dum_pvloss dummy&lt;br /&gt;
define dum_pvpower_log dummy &lt;br /&gt;
define dum_pvpower_read dummy &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[notify]] device in FHEM ===&lt;br /&gt;
Auslesen der Daten, getriggert vom ModbusAttr:&lt;br /&gt;
&lt;br /&gt;
prg_solaredge&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
KeSolarEdge:DC-Power:.* {&lt;br /&gt;
  # 16.2.2018 Markus Loeben&lt;br /&gt;
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können&lt;br /&gt;
  my $ACE = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: ACE &amp;quot; . $ACE;&lt;br /&gt;
  my $day = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $week = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $month = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: month &amp;quot; . $month;&lt;br /&gt;
  my $year = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: year &amp;quot; . $year;&lt;br /&gt;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -&amp;gt; laufende Werte berechnen&lt;br /&gt;
  if ($ACE &amp;gt; 0) {&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoday &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $day)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoweek &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $week)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytomonth &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $month)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoyear &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $year)));&lt;br /&gt;
  }&lt;br /&gt;
  #Log 1, &amp;quot;at_Solaredge: PV-Energy &amp;quot; . $ACE . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  #Leistung auslesen&lt;br /&gt;
  my $ACP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0);&lt;br /&gt;
  my $DCP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0);&lt;br /&gt;
  if ($DCP &amp;gt; 0) {&lt;br /&gt;
  # Verlustleistung berechnen&lt;br /&gt;
    fhem (&amp;quot;set dum_pvloss &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;, ($DCP - $ACP)));&lt;br /&gt;
    my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
    #Falls die größer ist als alles bis: ablegen&lt;br /&gt;
    if ($DCP &amp;gt; $MP) {&lt;br /&gt;
      fhem (&amp;quot;set dum_pv_power_read &amp;quot; . $DCP);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[at]] device in FHEM===&lt;br /&gt;
Tägliches Auswerten für spätere SVGs:&lt;br /&gt;
&lt;br /&gt;
at_midnight&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
*23:59 {&lt;br /&gt;
  # Abspeichern der täglichen, wöchentlichen und monatlichen Werte 16.3.18 Loeben;&lt;br /&gt;
  use Time::Local;&lt;br /&gt;
  my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime(time()+61);&lt;br /&gt;
  #Werte einlesen&lt;br /&gt;
  my $ace = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,-1);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight AC-Energy&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  #Tag updaten&lt;br /&gt;
  # PV&lt;br /&gt;
  my $aceread = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read &amp;quot; . $aceread;&lt;br /&gt;
  my $aceday = ($ace - $aceread);&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_read &amp;quot; . $ace);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_log &amp;quot; . $MP);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_read 0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  #Wochenwerte speichern;&lt;br /&gt;
  if ($Pwday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($ace - $aceread)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_read &amp;quot; . $ace);&lt;br /&gt;
  }  &lt;br /&gt;
  #Monatswerte speichern;&lt;br /&gt;
  if ($Pmday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
  #Jahreswerte speichern;&lt;br /&gt;
  if ($Pyday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
&lt;br /&gt;
Das ModbusDevice legt sich ein eigenes Log an. Um aber übersichtliche Grafiken zu bekommen werden die Daten des Dummy benötigt. Hier hilft ein Logfile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; define FileLog_KePv Filelog %L/pv-%Y.log dum_pv*.* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grafiken==&lt;br /&gt;
&lt;br /&gt;
{{Todo | Beschreibungen zu SVG hinterlegen }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/se-inverter-installation-guide-de.pdf Installationsanleitung]&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note-de.pdf Sunspec Protokoll]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38513</id>
		<title>SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38513"/>
		<updated>2023-07-22T15:52:55Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Bild hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=Datei:SolarEdgeSE8K.jpg&lt;br /&gt;
|Bildbeschreibung=SolarEdge Wechselrichter&lt;br /&gt;
|HWProtocol=Modubus TCP &lt;br /&gt;
|HWType=Wechselrichter&lt;br /&gt;
|HWCategory=Energieverbrauchsmessung&lt;br /&gt;
|HWComm=Ethernet TCP&lt;br /&gt;
|HWChannels=1 (bidiektional)&lt;br /&gt;
|HWVoltage=750V DC; 230V 3xAC&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch 2% (geschätzt)&lt;br /&gt;
|HWPoweredBy=230V~ 3xAC&lt;br /&gt;
|HWSize=317x512x214 (mm)&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#ModbusAttr ModbusAttr]&lt;br /&gt;
|HWManufacturer=[https://www.solaredge.com/de Solaredge]&lt;br /&gt;
}}&lt;br /&gt;
== Wechselrichter von SolarEdge in FHEM einbinden==&lt;br /&gt;
Dieser Artikel beschreibt die Einbindung von SolarEdge Wechselrichtern der Serie SE(x)K in ein FHEM System über eine Ethernetverbindung mit Hilfe des Moduls &#039;&#039;&#039;[[ModbusAttr]]&#039;&#039;&#039;. Die Wechselrichter der SE(x)K Serie bis 10KWp (SE3K - SE10K) sind alle sehr ähnlich aufgebaut, so dass diese Anleitung für alle funktionieren sollte.&lt;br /&gt;
&lt;br /&gt;
===Vorbedingungen===&lt;br /&gt;
FHEM läuft und hat genügend Platz für Modifikationen und Logfiles (ca. 100 MByte / Jahr).&lt;br /&gt;
&lt;br /&gt;
===Am Wechselrichter===&lt;br /&gt;
&lt;br /&gt;
Im zugehörigen Menü ist bereits der Port 502 eingestellt. Trotzdem muss dieser noch einmal aktiviert werden, da sonst Modbus TCP nicht aktiv wird.&lt;br /&gt;
Hilfe da zu bietet die Installationsanleitung [1].  &amp;lt;br&amp;gt;&lt;br /&gt;
Es ist möglich, dass es auch nur 10 Minuten aktiv bleibt wenn er nicht angesprochen wird.&lt;br /&gt;
&lt;br /&gt;
==ModbusAttr Device in FHEM ==&lt;br /&gt;
&lt;br /&gt;
in FHEM wird ein ModbusAttr angelegt&amp;lt;pre&amp;gt;&lt;br /&gt;
define SolarEdge ModbusAttr 1 60 192.168.178.36 TCP&lt;br /&gt;
attr SolarEdge dev-h-defPoll 1&lt;br /&gt;
attr SolarEdge dev-h-defShowGet 1&lt;br /&gt;
attr SolarEdge enableControlSet 1&lt;br /&gt;
attr SolarEdge event-on-change-reading .*&lt;br /&gt;
attr SolarEdge event-on-update-reading AC-Energy,AC-Power,Status&lt;br /&gt;
attr SolarEdge group Energie&lt;br /&gt;
attr SolarEdge maxTimeoutsToReconnect 3&lt;br /&gt;
attr SolarEdge silentReconnect 1&lt;br /&gt;
attr SolarEdge sortUpdate 1&lt;br /&gt;
attr SolarEdge stateFormat {sprintf(&amp;quot;%.0f W-%.0f V-%.0f W&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Voltage&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0))}&lt;br /&gt;
attr SolarEdge webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach können die Modbus Datenpunkte (Register) der vorhandenen SolarEdge Komponenten wie Wechselrichter, Zwischenzähler und Batteriespeicher wie folgt definiert werden.&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Wechselrichter==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40000-len 4&lt;br /&gt;
attr SolarEdge obj-h40000-reading I_SunSpec_ID&lt;br /&gt;
attr SolarEdge obj-h40000-unpack (a4)&lt;br /&gt;
attr SolarEdge obj-h40004-len 16&lt;br /&gt;
attr SolarEdge obj-h40004-reading I_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40004-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40020-len 16&lt;br /&gt;
attr SolarEdge obj-h40020-reading I_Model&lt;br /&gt;
attr SolarEdge obj-h40020-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40044-len 8&lt;br /&gt;
attr SolarEdge obj-h40044-reading I_Version&lt;br /&gt;
attr SolarEdge obj-h40044-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40052-len 16&lt;br /&gt;
attr SolarEdge obj-h40052-reading I_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40052-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40068-reading I_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40069-map 101:SinglePhase, 102:SplitSinglePhase, 103:ThreePhase&lt;br /&gt;
attr SolarEdge obj-h40069-reading I_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40070-reading I_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40071-reading I_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40072-reading I_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40073-reading I_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40074-reading I_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40075-reading I_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40075-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN&lt;br /&gt;
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN&lt;br /&gt;
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN&lt;br /&gt;
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF&lt;br /&gt;
attr SolarEdge obj-h40082-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40083-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40083-len 2&lt;br /&gt;
attr SolarEdge obj-h40083-reading AC-Power&lt;br /&gt;
attr SolarEdge obj-h40083-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40085-len 2&lt;br /&gt;
attr SolarEdge obj-h40085-reading I_AC_Frequency&lt;br /&gt;
attr SolarEdge obj-h40085-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40087-len 2&lt;br /&gt;
attr SolarEdge obj-h40087-reading I_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40087-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40089-len 2&lt;br /&gt;
attr SolarEdge obj-h40089-reading I_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40089-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40091-len 2&lt;br /&gt;
attr SolarEdge obj-h40091-reading I_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40091-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40093-len 3&lt;br /&gt;
attr SolarEdge obj-h40093-reading AC-Energy&lt;br /&gt;
attr SolarEdge obj-h40093-unpack l&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40096-len 2&lt;br /&gt;
attr SolarEdge obj-h40096-reading DC-Current&lt;br /&gt;
attr SolarEdge obj-h40096-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40098-len 2&lt;br /&gt;
attr SolarEdge obj-h40098-reading DC-Voltage&lt;br /&gt;
attr SolarEdge obj-h40098-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40100-len 2&lt;br /&gt;
attr SolarEdge obj-h40100-reading DC-Power&lt;br /&gt;
attr SolarEdge obj-h40100-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40103-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_Temp_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40103-len 1&lt;br /&gt;
attr SolarEdge obj-h40103-reading I_Temp_Sink&lt;br /&gt;
attr SolarEdge obj-h40103-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40106-reading I_Temp_SF&lt;br /&gt;
attr SolarEdge obj-h40106-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40107-reading I_Status&lt;br /&gt;
attr SolarEdge obj-h40107-map 1:Off, 2:Sleeping, 3:Starting, 4:On, 5:Throttled, 6:ShuttingDown, 7:Fault, 8:Maintenance&lt;br /&gt;
attr SolarEdge obj-h40108-reading I_Status_Vendor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Zwischenzähler==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40123-len 16&lt;br /&gt;
attr SolarEdge obj-h40123-reading M_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40123-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40139-len 16&lt;br /&gt;
attr SolarEdge obj-h40139-reading M_Model&lt;br /&gt;
attr SolarEdge obj-h40139-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40163-len 8&lt;br /&gt;
attr SolarEdge obj-h40163-reading M_Version&lt;br /&gt;
attr SolarEdge obj-h40163-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40171-len 16&lt;br /&gt;
attr SolarEdge obj-h40171-reading M_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40171-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40187-reading M_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40188-map 201:SinglePhase, 202:SplitSinglePhase, 203:StarConnectThreePhase, 204:DeltaConnectThreePhase&lt;br /&gt;
attr SolarEdge obj-h40188-reading M_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40189-reading M_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40190-reading M_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40191-reading M_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40192-reading M_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40193-reading M_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40193-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40194-reading M_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40194-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40195-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40195-reading M_AC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40195-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40196-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40196-reading M_AC_Voltage_A&lt;br /&gt;
attr SolarEdge obj-h40196-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40197-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40197-reading M_AC_Voltage_B&lt;br /&gt;
attr SolarEdge obj-h40197-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40198-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40198-reading M_AC_Voltage_C&lt;br /&gt;
attr SolarEdge obj-h40198-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40206-reading M_AC_POWER&lt;br /&gt;
attr SolarEdge obj-h40206-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40207-reading M_AC_POWER_A&lt;br /&gt;
attr SolarEdge obj-h40207-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40208-reading M_AC_POWER_B&lt;br /&gt;
attr SolarEdge obj-h40208-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40209-reading M_AC_POWER_C&lt;br /&gt;
attr SolarEdge obj-h40209-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40210-reading M_AC_POWER_SF&lt;br /&gt;
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40211-reading M_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40211-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40212-reading M_AC_VA_A&lt;br /&gt;
attr SolarEdge obj-h40212-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40213-reading M_AC_VA_B&lt;br /&gt;
attr SolarEdge obj-h40213-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40214-reading M_AC_VA_C&lt;br /&gt;
attr SolarEdge obj-h40214-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40215-reading M_AC_VA_SF&lt;br /&gt;
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40216-reading M_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40216-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40217-reading M_AC_VAR_A&lt;br /&gt;
attr SolarEdge obj-h40217-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40218-reading M_AC_VAR_B&lt;br /&gt;
attr SolarEdge obj-h40218-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40219-reading M_AC_VAR_C&lt;br /&gt;
attr SolarEdge obj-h40219-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40220-reading M_AC_VAR_SF&lt;br /&gt;
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40221-reading M_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40221-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40222-reading M_AC_PF_A&lt;br /&gt;
attr SolarEdge obj-h40222-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40223-reading M_AC_PF_B&lt;br /&gt;
attr SolarEdge obj-h40223-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40224-reading M_AC_PF_C&lt;br /&gt;
attr SolarEdge obj-h40224-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40225-reading M_AC_PF_SF&lt;br /&gt;
attr SolarEdge obj-h40225-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Batteriespeicher==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62720-len 16&lt;br /&gt;
attr SolarEdge obj-h62720-reading B_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h62720-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62736-len 16&lt;br /&gt;
attr SolarEdge obj-h62736-reading B_Model&lt;br /&gt;
attr SolarEdge obj-h62736-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62752-len 8&lt;br /&gt;
attr SolarEdge obj-h62752-reading B_Version&lt;br /&gt;
attr SolarEdge obj-h62752-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h62768-len 16&lt;br /&gt;
attr SolarEdge obj-h62768-reading B_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h62768-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62784-reading B_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h62786-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62786-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62786-len 2&lt;br /&gt;
attr SolarEdge obj-h62786-reading B_Rated_Energy&lt;br /&gt;
attr SolarEdge obj-h62786-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62786-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62788-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62788-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62788-len 2&lt;br /&gt;
attr SolarEdge obj-h62788-reading B_Max_Charge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62788-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62788-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62790-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62790-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62790-len 2&lt;br /&gt;
attr SolarEdge obj-h62790-reading B_Max_Discharge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62790-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62790-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62792-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62792-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62792-len 2&lt;br /&gt;
attr SolarEdge obj-h62792-reading B_Max_Charge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62792-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62792-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62794-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62794-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62794-len 2&lt;br /&gt;
attr SolarEdge obj-h62794-reading B_Max_Discharge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62794-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62794-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62828-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62828-len 2&lt;br /&gt;
attr SolarEdge obj-h62828-reading B_Average_Temperature&lt;br /&gt;
attr SolarEdge obj-h62828-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62828-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62830-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62830-len 2&lt;br /&gt;
attr SolarEdge obj-h62830-reading B_Max_Temperature&lt;br /&gt;
attr SolarEdge obj-h62830-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62830-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62832-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62832-len 2&lt;br /&gt;
attr SolarEdge obj-h62832-reading B_Instantaneous_Voltage&lt;br /&gt;
attr SolarEdge obj-h62832-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62832-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62834-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62834-len 2&lt;br /&gt;
attr SolarEdge obj-h62834-reading B_Instantaneous_Current&lt;br /&gt;
attr SolarEdge obj-h62834-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62834-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62836-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62836-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62836-len 2&lt;br /&gt;
attr SolarEdge obj-h62836-reading B_Instantaneous_Power&lt;br /&gt;
attr SolarEdge obj-h62836-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62836-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62838-len 4&lt;br /&gt;
attr SolarEdge obj-h62838-reading B_Lifetime_Export_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62838-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62838-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62842-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62842-format %s&lt;br /&gt;
attr SolarEdge obj-h62842-len 4&lt;br /&gt;
attr SolarEdge obj-h62842-reading B_Lifetime_Import_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62842-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62842-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62846-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62846-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62846-len 2&lt;br /&gt;
attr SolarEdge obj-h62846-reading B_Max_Energy&lt;br /&gt;
attr SolarEdge obj-h62846-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62846-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62848-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62848-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62848-len 2&lt;br /&gt;
attr SolarEdge obj-h62848-reading B_Available_Energy&lt;br /&gt;
attr SolarEdge obj-h62848-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62848-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62850-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62850-len 2&lt;br /&gt;
attr SolarEdge obj-h62850-reading B_State_of_Health&lt;br /&gt;
attr SolarEdge obj-h62850-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62850-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62852-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62852-len 2&lt;br /&gt;
attr SolarEdge obj-h62852-reading B_State_of_Energy&lt;br /&gt;
attr SolarEdge obj-h62852-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62852-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62854-len 2&lt;br /&gt;
attr SolarEdge obj-h62854-map 0:Off, 1:Standby, 2:Init, 3:Charge, 4:Discharge, 5:Fault, 6:TrickleCharge, 7:Idle&lt;br /&gt;
attr SolarEdge obj-h62854-reading B_Status&lt;br /&gt;
attr SolarEdge obj-h62856-len 2&lt;br /&gt;
attr SolarEdge obj-h62856-reading B_Status_Internal&lt;br /&gt;
attr SolarEdge obj-h62856-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Folgende Datei enthält die entsprechenden Anpassungen an die SolarEdge-Dokumentation, die diesen Attribut-Definitionen zugrunde liegen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FHEM-Solaredge_SunSpec_ModbusAttr.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Weiteres Beispiel einer etwas umfangreicheren Einbindung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internals:&lt;br /&gt;
   BUSY       0&lt;br /&gt;
   DEF        1 30 192.168.178.36 TCP&lt;br /&gt;
   DEST       192.168.178.36:502&lt;br /&gt;
   DeviceName 192.168.178.36:502&lt;br /&gt;
   FD         91&lt;br /&gt;
   INTERVAL   600&lt;br /&gt;
   IODev      KeSolarEdge&lt;br /&gt;
   LASTOPEN   1523044866.65275&lt;br /&gt;
   MODBUSID   1&lt;br /&gt;
   ModuleVersion 3.7.3 - 22.12.2017&lt;br /&gt;
   NAME       KeSolarEdge&lt;br /&gt;
   NOTIFYDEV  global&lt;br /&gt;
   NR         354&lt;br /&gt;
   NTFY_ORDER 50-KeSolarEdge&lt;br /&gt;
   PARTIAL    &lt;br /&gt;
   PROTOCOL   TCP&lt;br /&gt;
   REQUESTHEX 00270000000601039c940001&lt;br /&gt;
   STATE      0 W; 1718 kWh&lt;br /&gt;
   TRIGGERTIME 1523048587.13296&lt;br /&gt;
   TRIGGERTIME_FMT 2018-04-06 23:03:07&lt;br /&gt;
   TYPE       ModbusAttr&lt;br /&gt;
   devioLoglevel 4&lt;br /&gt;
   nextOpenDelay 60&lt;br /&gt;
   QUEUE:&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy       1717.665&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Scale 0&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Val   1717665&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power        0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Scale -32768&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Val  65535&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power        0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Scale -1&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Val  0&lt;br /&gt;
     2018-04-06 22:53:07   HeatSinkTemp    0&lt;br /&gt;
     2018-04-06 22:53:07   Status          2&lt;br /&gt;
     2018-04-06 22:53:07   Zustand         Nachtmodus&lt;br /&gt;
     2018-04-06 22:01:06   state           opened&lt;br /&gt;
   defptr:&lt;br /&gt;
     1:&lt;br /&gt;
   gotReadings:&lt;br /&gt;
     AC-Power-Scale 0&lt;br /&gt;
   helper:&lt;br /&gt;
     buffer     &lt;br /&gt;
     lid        1&lt;br /&gt;
     lrecv      1523048290.49688&lt;br /&gt;
     lsend      1523048290.48976&lt;br /&gt;
   lastRead:&lt;br /&gt;
     h40083     1523048290.48193&lt;br /&gt;
     h40084     1523048290.50143&lt;br /&gt;
     h40093     1523047987.08669&lt;br /&gt;
     h40095     1523047987.09043&lt;br /&gt;
     h40096     1523047987.09428&lt;br /&gt;
     h40097     1523047987.09784&lt;br /&gt;
     h40098     1523047987.10153&lt;br /&gt;
     h40099     1523047987.10505&lt;br /&gt;
     h40100     1523047987.10867&lt;br /&gt;
     h40101     1523047987.11226&lt;br /&gt;
     h40103     1523047987.1158&lt;br /&gt;
     h40107     1523047987.11994&lt;br /&gt;
Attributes:&lt;br /&gt;
   dev-h-combine 200&lt;br /&gt;
   dev-h-defPoll 1&lt;br /&gt;
   dev-h-defShowGet 1&lt;br /&gt;
   enableControlSet 1&lt;br /&gt;
   event-on-change-reading .*&lt;br /&gt;
   event-on-update-reading AC-Energy,AC-Energy-Scale,AC-Power-Scale,DC-Voltage-Scale,DC-Current-Scale,DC-Power-Scale,Status&lt;br /&gt;
   maxTimeoutsToReconnect 3&lt;br /&gt;
   obj-h40083-reading AC-Power-Val&lt;br /&gt;
   obj-h40084-reading AC-Power-Scale&lt;br /&gt;
   obj-h40084-unpack s&amp;gt;&lt;br /&gt;
   obj-h40093-len 2&lt;br /&gt;
   obj-h40093-reading AC-Energy-Val&lt;br /&gt;
   obj-h40093-unpack l&amp;gt;&lt;br /&gt;
   obj-h40095-reading AC-Energy-Scale&lt;br /&gt;
   obj-h40096-reading DC-Current-Val&lt;br /&gt;
   obj-h40097-reading DC-Current-Scale&lt;br /&gt;
   obj-h40097-unpack s&amp;gt;&lt;br /&gt;
   obj-h40098-reading DC-Voltage-Val&lt;br /&gt;
   obj-h40099-reading DC-Voltage-Scale&lt;br /&gt;
   obj-h40099-unpack s&amp;gt;&lt;br /&gt;
   obj-h40100-reading DC-Power-Val&lt;br /&gt;
   obj-h40101-reading DC-Power-Scale&lt;br /&gt;
   obj-h40101-unpack s&amp;gt;&lt;br /&gt;
   obj-h40103-reading HeatSinkTemp&lt;br /&gt;
   obj-h40103-unpack s&amp;gt;&lt;br /&gt;
   obj-h40107-reading Status&lt;br /&gt;
   room       Solar,SolarPV,SolarReport&lt;br /&gt;
   silentReconnect 1&lt;br /&gt;
   sortUpdate 1&lt;br /&gt;
   stateFormat {sprintf(&amp;quot;%.0f W; %.0f kWh&amp;quot;,ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0))}&lt;br /&gt;
   userReadings AC-Energy:(AC-Energy-Scale.*) { &lt;br /&gt;
  my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Scale&amp;quot;,0);&lt;br /&gt;
  return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Val&amp;quot;,0) * ( 10 ** $scale) / 1000);;},&lt;br /&gt;
  &lt;br /&gt;
AC-Power:(AC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
&lt;br /&gt;
DC-Power:(DC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Current:(DC-Current-Scale.*) {&lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Voltage:(DC-Voltage-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
 &lt;br /&gt;
Zustand:(Status.*) {&lt;br /&gt;
   my $Zus = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Status&amp;quot;,0);&lt;br /&gt;
   my $rueck = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Zustand&amp;quot;,0);&lt;br /&gt;
   if (($Zus == 2) and (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 600)) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 600&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Nachtmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   elsif  (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 60) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 60&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Tagmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   return ($rueck);;&lt;br /&gt;
 }&lt;br /&gt;
   webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;Solaredge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Dummy]] Devices anlegen===&lt;br /&gt;
Zur Verwendung der &amp;quot;at&amp;quot;s werden Dummys benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dum_pv_energyday_log dummy &lt;br /&gt;
define dum_pv_energyday_read dummy &lt;br /&gt;
define dum_pv_energymonth_log dummy &lt;br /&gt;
define dum_pv_energymonth_read dummy&lt;br /&gt;
define dum_pv_energytoday dummy&lt;br /&gt;
define dum_pv_energytomonth dummy&lt;br /&gt;
define dum_pv_energytoweek dummy&lt;br /&gt;
define dum_pv_energytoyear dummy&lt;br /&gt;
define dum_pv_energyweek_log dummy&lt;br /&gt;
define dum_pv_energyweek_read dummy&lt;br /&gt;
define dum_pv_energyyear_log dummy&lt;br /&gt;
define dum_pv_energyyear_read dummy&lt;br /&gt;
define dum_pvdcpower dummy&lt;br /&gt;
define dum_pvdcvolt dummy&lt;br /&gt;
define dum_pvenergy dummy&lt;br /&gt;
define dum_pvloss dummy&lt;br /&gt;
define dum_pvpower_log dummy &lt;br /&gt;
define dum_pvpower_read dummy &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[notify]] device in FHEM ===&lt;br /&gt;
Auslesen der Daten, getriggert vom ModbusAttr:&lt;br /&gt;
&lt;br /&gt;
prg_solaredge&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
KeSolarEdge:DC-Power:.* {&lt;br /&gt;
  # 16.2.2018 Markus Loeben&lt;br /&gt;
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können&lt;br /&gt;
  my $ACE = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: ACE &amp;quot; . $ACE;&lt;br /&gt;
  my $day = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $week = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $month = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: month &amp;quot; . $month;&lt;br /&gt;
  my $year = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: year &amp;quot; . $year;&lt;br /&gt;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -&amp;gt; laufende Werte berechnen&lt;br /&gt;
  if ($ACE &amp;gt; 0) {&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoday &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $day)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoweek &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $week)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytomonth &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $month)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoyear &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $year)));&lt;br /&gt;
  }&lt;br /&gt;
  #Log 1, &amp;quot;at_Solaredge: PV-Energy &amp;quot; . $ACE . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  #Leistung auslesen&lt;br /&gt;
  my $ACP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0);&lt;br /&gt;
  my $DCP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0);&lt;br /&gt;
  if ($DCP &amp;gt; 0) {&lt;br /&gt;
  # Verlustleistung berechnen&lt;br /&gt;
    fhem (&amp;quot;set dum_pvloss &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;, ($DCP - $ACP)));&lt;br /&gt;
    my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
    #Falls die größer ist als alles bis: ablegen&lt;br /&gt;
    if ($DCP &amp;gt; $MP) {&lt;br /&gt;
      fhem (&amp;quot;set dum_pv_power_read &amp;quot; . $DCP);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[at]] device in FHEM===&lt;br /&gt;
Tägliches Auswerten für spätere SVGs:&lt;br /&gt;
&lt;br /&gt;
at_midnight&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
*23:59 {&lt;br /&gt;
  # Abspeichern der täglichen, wöchentlichen und monatlichen Werte 16.3.18 Loeben;&lt;br /&gt;
  use Time::Local;&lt;br /&gt;
  my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime(time()+61);&lt;br /&gt;
  #Werte einlesen&lt;br /&gt;
  my $ace = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,-1);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight AC-Energy&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  #Tag updaten&lt;br /&gt;
  # PV&lt;br /&gt;
  my $aceread = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read &amp;quot; . $aceread;&lt;br /&gt;
  my $aceday = ($ace - $aceread);&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_read &amp;quot; . $ace);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_log &amp;quot; . $MP);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_read 0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  #Wochenwerte speichern;&lt;br /&gt;
  if ($Pwday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($ace - $aceread)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_read &amp;quot; . $ace);&lt;br /&gt;
  }  &lt;br /&gt;
  #Monatswerte speichern;&lt;br /&gt;
  if ($Pmday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
  #Jahreswerte speichern;&lt;br /&gt;
  if ($Pyday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
&lt;br /&gt;
Das ModbusDevice legt sich ein eigenes Log an. Um aber übersichtliche Grafiken zu bekommen werden die Daten des Dummy benötigt. Hier hilft ein Logfile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; define FileLog_KePv Filelog %L/pv-%Y.log dum_pv*.* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grafiken==&lt;br /&gt;
&lt;br /&gt;
{{Todo | Beschreibungen zu SVG hinterlegen }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/se-inverter-installation-guide-de.pdf Installationsanleitung]&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note-de.pdf Sunspec Protokoll]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:SolarEdgeSE8K.jpg&amp;diff=38512</id>
		<title>Datei:SolarEdgeSE8K.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:SolarEdgeSE8K.jpg&amp;diff=38512"/>
		<updated>2023-07-22T15:50:44Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SolarEdge SE8K Inverter&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38496</id>
		<title>SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SolarEdge_Wechselrichter&amp;diff=38496"/>
		<updated>2023-07-18T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Generalisierung für alle SE(x)K Wechselrichter, Attributdefinitionen für 3-Phasen Zwischenzähler und DC Batteriespeicher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=platzHalter.png&lt;br /&gt;
|Bildbeschreibung=SolarEdge SE10k&lt;br /&gt;
|HWProtocol=Modubus TCP &lt;br /&gt;
|HWType=Wechselrichter&lt;br /&gt;
|HWCategory=Energieverbrauchsmessung&lt;br /&gt;
|HWComm=Ethernet TCP&lt;br /&gt;
|HWChannels=1 (bidiektional)&lt;br /&gt;
|HWVoltage=750V DC; 230V 3xAC&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch 2% (geschätzt)&lt;br /&gt;
|HWPoweredBy=230V~ 3xAC&lt;br /&gt;
|HWSize=317x512x214 (mm)&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#ModbusAttr ModbusAttr]&lt;br /&gt;
|HWManufacturer=[https://www.solaredge.com/de Solaredge]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Wechselrichter von SolarEdge in FHEM einbinden==&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel beschreibt die Einbindung von SolarEdge Wechselrichtern der Serie SE(x)K in ein FHEM System über eine Ethernetverbindung mit Hilfe des Moduls ModbusAttr. Die Wechselrichter der SE(x)K Serie bis 10KWp (SE3K - SE10K) sind alle sehr ähnlich aufgebaut, so dass diese Anleitung für alle funktionieren sollte.&lt;br /&gt;
===Vorbedingungen===&lt;br /&gt;
&lt;br /&gt;
FHEM läuft und hat genügend Platz für Modifikationen und Logfiles (ca. 100 MByte / Jahr).&lt;br /&gt;
&lt;br /&gt;
===Am Wechselrichter===&lt;br /&gt;
&lt;br /&gt;
Im zugehörigen Menü ist bereits der Port 502 eingestellt. Trotzdem muss dieser noch einmal aktiviert werden, da sonst Modbus TCP nicht aktiv wird.&lt;br /&gt;
Hilfe da zu bietet die Installationsanleitung [1].  &amp;lt;br&amp;gt;&lt;br /&gt;
Es ist möglich, dass es auch nur 10 Minuten aktiv bleibt wenn er nicht angesprochen wird.&lt;br /&gt;
&lt;br /&gt;
==ModbusAttr Device in FHEM ==&lt;br /&gt;
&lt;br /&gt;
in FHEM wird ein ModbusAttr angelegt&amp;lt;pre&amp;gt;&lt;br /&gt;
define SolarEdge ModbusAttr 1 60 192.168.178.36 TCP&lt;br /&gt;
attr SolarEdge dev-h-defPoll 1&lt;br /&gt;
attr SolarEdge dev-h-defShowGet 1&lt;br /&gt;
attr SolarEdge enableControlSet 1&lt;br /&gt;
attr SolarEdge event-on-change-reading .*&lt;br /&gt;
attr SolarEdge event-on-update-reading AC-Energy,AC-Power,Status&lt;br /&gt;
attr SolarEdge group Energie&lt;br /&gt;
attr SolarEdge maxTimeoutsToReconnect 3&lt;br /&gt;
attr SolarEdge silentReconnect 1&lt;br /&gt;
attr SolarEdge sortUpdate 1&lt;br /&gt;
attr SolarEdge stateFormat {sprintf(&amp;quot;%.0f W-%.0f V-%.0f W&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Voltage&amp;quot;,0),ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0))}&lt;br /&gt;
attr SolarEdge webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;SolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach können die Modbus Datenpunkte (Register) der vorhandenen SolarEdge Komponenten wie Wechselrichter, Zwischenzähler und Batteriespeicher wie folgt definiert werden.&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Wechselrichter==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40000-len 4&lt;br /&gt;
attr SolarEdge obj-h40000-reading I_SunSpec_ID&lt;br /&gt;
attr SolarEdge obj-h40000-unpack (a4)&lt;br /&gt;
attr SolarEdge obj-h40004-len 16&lt;br /&gt;
attr SolarEdge obj-h40004-reading I_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40004-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40020-len 16&lt;br /&gt;
attr SolarEdge obj-h40020-reading I_Model&lt;br /&gt;
attr SolarEdge obj-h40020-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40044-len 8&lt;br /&gt;
attr SolarEdge obj-h40044-reading I_Version&lt;br /&gt;
attr SolarEdge obj-h40044-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40052-len 16&lt;br /&gt;
attr SolarEdge obj-h40052-reading I_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40052-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40068-reading I_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40069-map 101:SinglePhase, 102:SplitSinglePhase, 103:ThreePhase&lt;br /&gt;
attr SolarEdge obj-h40069-reading I_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40070-reading I_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40071-reading I_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40072-reading I_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40073-reading I_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039;,&#039;I_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40074-reading I_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40075-reading I_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40075-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN&lt;br /&gt;
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN&lt;br /&gt;
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_AC_Voltage_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN&lt;br /&gt;
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF&lt;br /&gt;
attr SolarEdge obj-h40082-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40083-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40083-len 2&lt;br /&gt;
attr SolarEdge obj-h40083-reading AC-Power&lt;br /&gt;
attr SolarEdge obj-h40083-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40085-len 2&lt;br /&gt;
attr SolarEdge obj-h40085-reading I_AC_Frequency&lt;br /&gt;
attr SolarEdge obj-h40085-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40087-len 2&lt;br /&gt;
attr SolarEdge obj-h40087-reading I_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40087-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40089-len 2&lt;br /&gt;
attr SolarEdge obj-h40089-reading I_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40089-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40091-len 2&lt;br /&gt;
attr SolarEdge obj-h40091-reading I_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40091-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000&lt;br /&gt;
attr SolarEdge obj-h40093-len 3&lt;br /&gt;
attr SolarEdge obj-h40093-reading AC-Energy&lt;br /&gt;
attr SolarEdge obj-h40093-unpack l&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40096-len 2&lt;br /&gt;
attr SolarEdge obj-h40096-reading DC-Current&lt;br /&gt;
attr SolarEdge obj-h40096-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40098-len 2&lt;br /&gt;
attr SolarEdge obj-h40098-reading DC-Voltage&lt;br /&gt;
attr SolarEdge obj-h40098-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])&lt;br /&gt;
attr SolarEdge obj-h40100-len 2&lt;br /&gt;
attr SolarEdge obj-h40100-reading DC-Power&lt;br /&gt;
attr SolarEdge obj-h40100-unpack s&amp;gt;s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40103-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;I_Temp_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40103-len 1&lt;br /&gt;
attr SolarEdge obj-h40103-reading I_Temp_Sink&lt;br /&gt;
attr SolarEdge obj-h40103-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40106-reading I_Temp_SF&lt;br /&gt;
attr SolarEdge obj-h40106-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40107-reading I_Status&lt;br /&gt;
attr SolarEdge obj-h40107-map 1:Off, 2:Sleeping, 3:Starting, 4:On, 5:Throttled, 6:ShuttingDown, 7:Fault, 8:Maintenance&lt;br /&gt;
attr SolarEdge obj-h40108-reading I_Status_Vendor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Zwischenzähler==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40123-len 16&lt;br /&gt;
attr SolarEdge obj-h40123-reading M_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h40123-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40139-len 16&lt;br /&gt;
attr SolarEdge obj-h40139-reading M_Model&lt;br /&gt;
attr SolarEdge obj-h40139-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40163-len 8&lt;br /&gt;
attr SolarEdge obj-h40163-reading M_Version&lt;br /&gt;
attr SolarEdge obj-h40163-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h40171-len 16&lt;br /&gt;
attr SolarEdge obj-h40171-reading M_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h40171-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h40187-reading M_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h40188-map 201:SinglePhase, 202:SplitSinglePhase, 203:StarConnectThreePhase, 204:DeltaConnectThreePhase&lt;br /&gt;
attr SolarEdge obj-h40188-reading M_PhaseDesign&lt;br /&gt;
attr SolarEdge obj-h40189-reading M_SunSpec_Length&lt;br /&gt;
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40190-reading M_AC_Current&lt;br /&gt;
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40191-reading M_AC_Current_A&lt;br /&gt;
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40192-reading M_AC_Current_B&lt;br /&gt;
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Current_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40193-reading M_AC_Current_C&lt;br /&gt;
attr SolarEdge obj-h40193-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40194-reading M_AC_Current_SF&lt;br /&gt;
attr SolarEdge obj-h40194-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40195-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40195-reading M_AC_Voltage&lt;br /&gt;
attr SolarEdge obj-h40195-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40196-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40196-reading M_AC_Voltage_A&lt;br /&gt;
attr SolarEdge obj-h40196-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40197-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40197-reading M_AC_Voltage_B&lt;br /&gt;
attr SolarEdge obj-h40197-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40198-expr $val/100&lt;br /&gt;
attr SolarEdge obj-h40198-reading M_AC_Voltage_C&lt;br /&gt;
attr SolarEdge obj-h40198-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40206-reading M_AC_POWER&lt;br /&gt;
attr SolarEdge obj-h40206-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40207-reading M_AC_POWER_A&lt;br /&gt;
attr SolarEdge obj-h40207-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40208-reading M_AC_POWER_B&lt;br /&gt;
attr SolarEdge obj-h40208-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_Power_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40209-reading M_AC_POWER_C&lt;br /&gt;
attr SolarEdge obj-h40209-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40210-reading M_AC_POWER_SF&lt;br /&gt;
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40211-reading M_AC_VA&lt;br /&gt;
attr SolarEdge obj-h40211-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40212-reading M_AC_VA_A&lt;br /&gt;
attr SolarEdge obj-h40212-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40213-reading M_AC_VA_B&lt;br /&gt;
attr SolarEdge obj-h40213-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VA_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40214-reading M_AC_VA_C&lt;br /&gt;
attr SolarEdge obj-h40214-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40215-reading M_AC_VA_SF&lt;br /&gt;
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40216-reading M_AC_VAR&lt;br /&gt;
attr SolarEdge obj-h40216-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40217-reading M_AC_VAR_A&lt;br /&gt;
attr SolarEdge obj-h40217-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40218-reading M_AC_VAR_B&lt;br /&gt;
attr SolarEdge obj-h40218-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_VAR_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40219-reading M_AC_VAR_C&lt;br /&gt;
attr SolarEdge obj-h40219-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40220-reading M_AC_VAR_SF&lt;br /&gt;
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40221-reading M_AC_PF&lt;br /&gt;
attr SolarEdge obj-h40221-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40222-reading M_AC_PF_A&lt;br /&gt;
attr SolarEdge obj-h40222-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40223-reading M_AC_PF_B&lt;br /&gt;
attr SolarEdge obj-h40223-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum (&#039;SolarEdge&#039; ,&#039;M_AC_PF_SF&#039;,0))&lt;br /&gt;
attr SolarEdge obj-h40224-reading M_AC_PF_C&lt;br /&gt;
attr SolarEdge obj-h40224-unpack s&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h40225-reading M_AC_PF_SF&lt;br /&gt;
attr SolarEdge obj-h40225-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SolarEdge Batteriespeicher==&lt;br /&gt;
&lt;br /&gt;
Die Namen der Attribut-Definition für ModbusAttr sind eng an die Sunspec-Implementierung aus der SolarEdge-Dokumentation angelehnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62720-len 16&lt;br /&gt;
attr SolarEdge obj-h62720-reading B_Manufacturer&lt;br /&gt;
attr SolarEdge obj-h62720-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62736-len 16&lt;br /&gt;
attr SolarEdge obj-h62736-reading B_Model&lt;br /&gt;
attr SolarEdge obj-h62736-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62752-len 8&lt;br /&gt;
attr SolarEdge obj-h62752-reading B_Version&lt;br /&gt;
attr SolarEdge obj-h62752-unpack (a8)&lt;br /&gt;
attr SolarEdge obj-h62768-len 16&lt;br /&gt;
attr SolarEdge obj-h62768-reading B_SerialNumber&lt;br /&gt;
attr SolarEdge obj-h62768-unpack (a16)&lt;br /&gt;
attr SolarEdge obj-h62784-reading B_DeviceAddress&lt;br /&gt;
attr SolarEdge obj-h62786-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62786-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62786-len 2&lt;br /&gt;
attr SolarEdge obj-h62786-reading B_Rated_Energy&lt;br /&gt;
attr SolarEdge obj-h62786-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62786-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62788-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62788-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62788-len 2&lt;br /&gt;
attr SolarEdge obj-h62788-reading B_Max_Charge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62788-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62788-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62790-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62790-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62790-len 2&lt;br /&gt;
attr SolarEdge obj-h62790-reading B_Max_Discharge_Continues_Power&lt;br /&gt;
attr SolarEdge obj-h62790-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62790-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62792-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62792-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62792-len 2&lt;br /&gt;
attr SolarEdge obj-h62792-reading B_Max_Charge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62792-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62792-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62794-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62794-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62794-len 2&lt;br /&gt;
attr SolarEdge obj-h62794-reading B_Max_Discharge_Peak_Power&lt;br /&gt;
attr SolarEdge obj-h62794-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62794-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62828-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62828-len 2&lt;br /&gt;
attr SolarEdge obj-h62828-reading B_Average_Temperature&lt;br /&gt;
attr SolarEdge obj-h62828-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62828-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62830-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62830-len 2&lt;br /&gt;
attr SolarEdge obj-h62830-reading B_Max_Temperature&lt;br /&gt;
attr SolarEdge obj-h62830-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62830-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62832-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62832-len 2&lt;br /&gt;
attr SolarEdge obj-h62832-reading B_Instantaneous_Voltage&lt;br /&gt;
attr SolarEdge obj-h62832-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62832-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62834-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62834-len 2&lt;br /&gt;
attr SolarEdge obj-h62834-reading B_Instantaneous_Current&lt;br /&gt;
attr SolarEdge obj-h62834-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62834-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62836-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62836-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62836-len 2&lt;br /&gt;
attr SolarEdge obj-h62836-reading B_Instantaneous_Power&lt;br /&gt;
attr SolarEdge obj-h62836-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62836-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62838-len 4&lt;br /&gt;
attr SolarEdge obj-h62838-reading B_Lifetime_Export_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62838-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62838-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62842-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62842-format %s&lt;br /&gt;
attr SolarEdge obj-h62842-len 4&lt;br /&gt;
attr SolarEdge obj-h62842-reading B_Lifetime_Import_Energy_Counter&lt;br /&gt;
attr SolarEdge obj-h62842-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62842-unpack Q&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62846-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62846-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62846-len 2&lt;br /&gt;
attr SolarEdge obj-h62846-reading B_Max_Energy&lt;br /&gt;
attr SolarEdge obj-h62846-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62846-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62848-expr $val / 1000&lt;br /&gt;
attr SolarEdge obj-h62848-format %.2f&lt;br /&gt;
attr SolarEdge obj-h62848-len 2&lt;br /&gt;
attr SolarEdge obj-h62848-reading B_Available_Energy&lt;br /&gt;
attr SolarEdge obj-h62848-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62848-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62850-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62850-len 2&lt;br /&gt;
attr SolarEdge obj-h62850-reading B_State_of_Health&lt;br /&gt;
attr SolarEdge obj-h62850-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62850-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62852-format %.1f&lt;br /&gt;
attr SolarEdge obj-h62852-len 2&lt;br /&gt;
attr SolarEdge obj-h62852-reading B_State_of_Energy&lt;br /&gt;
attr SolarEdge obj-h62852-revRegs 1&lt;br /&gt;
attr SolarEdge obj-h62852-unpack f&amp;gt;&lt;br /&gt;
attr SolarEdge obj-h62854-len 2&lt;br /&gt;
attr SolarEdge obj-h62854-map 0:Off, 1:Standby, 2:Init, 3:Charge, 4:Discharge, 5:Fault, 6:TrickleCharge, 7:Idle&lt;br /&gt;
attr SolarEdge obj-h62854-reading B_Status&lt;br /&gt;
attr SolarEdge obj-h62856-len 2&lt;br /&gt;
attr SolarEdge obj-h62856-reading B_Status_Internal&lt;br /&gt;
attr SolarEdge obj-h62856-unpack s&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Folgende Datei enthält die entsprechenden Anpassungen an die SolarEdge-Dokumentation, die diesen Attribut-Definitionen zugrunde liegen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FHEM-Solaredge_SunSpec_ModbusAttr.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Weiteres Beispiel einer etwas umfangreicheren Einbindung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Internals:&lt;br /&gt;
   BUSY       0&lt;br /&gt;
   DEF        1 30 192.168.178.36 TCP&lt;br /&gt;
   DEST       192.168.178.36:502&lt;br /&gt;
   DeviceName 192.168.178.36:502&lt;br /&gt;
   FD         91&lt;br /&gt;
   INTERVAL   600&lt;br /&gt;
   IODev      KeSolarEdge&lt;br /&gt;
   LASTOPEN   1523044866.65275&lt;br /&gt;
   MODBUSID   1&lt;br /&gt;
   ModuleVersion 3.7.3 - 22.12.2017&lt;br /&gt;
   NAME       KeSolarEdge&lt;br /&gt;
   NOTIFYDEV  global&lt;br /&gt;
   NR         354&lt;br /&gt;
   NTFY_ORDER 50-KeSolarEdge&lt;br /&gt;
   PARTIAL    &lt;br /&gt;
   PROTOCOL   TCP&lt;br /&gt;
   REQUESTHEX 00270000000601039c940001&lt;br /&gt;
   STATE      0 W; 1718 kWh&lt;br /&gt;
   TRIGGERTIME 1523048587.13296&lt;br /&gt;
   TRIGGERTIME_FMT 2018-04-06 23:03:07&lt;br /&gt;
   TYPE       ModbusAttr&lt;br /&gt;
   devioLoglevel 4&lt;br /&gt;
   nextOpenDelay 60&lt;br /&gt;
   QUEUE:&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy       1717.665&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Scale 0&lt;br /&gt;
     2018-04-06 22:53:07   AC-Energy-Val   1717665&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power        0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:58:10   AC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Scale -32768&lt;br /&gt;
     2018-04-06 22:53:07   DC-Current-Val  65535&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power        0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Scale  0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Power-Val    0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage      0&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Scale -1&lt;br /&gt;
     2018-04-06 22:53:07   DC-Voltage-Val  0&lt;br /&gt;
     2018-04-06 22:53:07   HeatSinkTemp    0&lt;br /&gt;
     2018-04-06 22:53:07   Status          2&lt;br /&gt;
     2018-04-06 22:53:07   Zustand         Nachtmodus&lt;br /&gt;
     2018-04-06 22:01:06   state           opened&lt;br /&gt;
   defptr:&lt;br /&gt;
     1:&lt;br /&gt;
   gotReadings:&lt;br /&gt;
     AC-Power-Scale 0&lt;br /&gt;
   helper:&lt;br /&gt;
     buffer     &lt;br /&gt;
     lid        1&lt;br /&gt;
     lrecv      1523048290.49688&lt;br /&gt;
     lsend      1523048290.48976&lt;br /&gt;
   lastRead:&lt;br /&gt;
     h40083     1523048290.48193&lt;br /&gt;
     h40084     1523048290.50143&lt;br /&gt;
     h40093     1523047987.08669&lt;br /&gt;
     h40095     1523047987.09043&lt;br /&gt;
     h40096     1523047987.09428&lt;br /&gt;
     h40097     1523047987.09784&lt;br /&gt;
     h40098     1523047987.10153&lt;br /&gt;
     h40099     1523047987.10505&lt;br /&gt;
     h40100     1523047987.10867&lt;br /&gt;
     h40101     1523047987.11226&lt;br /&gt;
     h40103     1523047987.1158&lt;br /&gt;
     h40107     1523047987.11994&lt;br /&gt;
Attributes:&lt;br /&gt;
   dev-h-combine 200&lt;br /&gt;
   dev-h-defPoll 1&lt;br /&gt;
   dev-h-defShowGet 1&lt;br /&gt;
   enableControlSet 1&lt;br /&gt;
   event-on-change-reading .*&lt;br /&gt;
   event-on-update-reading AC-Energy,AC-Energy-Scale,AC-Power-Scale,DC-Voltage-Scale,DC-Current-Scale,DC-Power-Scale,Status&lt;br /&gt;
   maxTimeoutsToReconnect 3&lt;br /&gt;
   obj-h40083-reading AC-Power-Val&lt;br /&gt;
   obj-h40084-reading AC-Power-Scale&lt;br /&gt;
   obj-h40084-unpack s&amp;gt;&lt;br /&gt;
   obj-h40093-len 2&lt;br /&gt;
   obj-h40093-reading AC-Energy-Val&lt;br /&gt;
   obj-h40093-unpack l&amp;gt;&lt;br /&gt;
   obj-h40095-reading AC-Energy-Scale&lt;br /&gt;
   obj-h40096-reading DC-Current-Val&lt;br /&gt;
   obj-h40097-reading DC-Current-Scale&lt;br /&gt;
   obj-h40097-unpack s&amp;gt;&lt;br /&gt;
   obj-h40098-reading DC-Voltage-Val&lt;br /&gt;
   obj-h40099-reading DC-Voltage-Scale&lt;br /&gt;
   obj-h40099-unpack s&amp;gt;&lt;br /&gt;
   obj-h40100-reading DC-Power-Val&lt;br /&gt;
   obj-h40101-reading DC-Power-Scale&lt;br /&gt;
   obj-h40101-unpack s&amp;gt;&lt;br /&gt;
   obj-h40103-reading HeatSinkTemp&lt;br /&gt;
   obj-h40103-unpack s&amp;gt;&lt;br /&gt;
   obj-h40107-reading Status&lt;br /&gt;
   room       Solar,SolarPV,SolarReport&lt;br /&gt;
   silentReconnect 1&lt;br /&gt;
   sortUpdate 1&lt;br /&gt;
   stateFormat {sprintf(&amp;quot;%.0f W; %.0f kWh&amp;quot;,ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0),ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0))}&lt;br /&gt;
   userReadings AC-Energy:(AC-Energy-Scale.*) { &lt;br /&gt;
  my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Scale&amp;quot;,0);&lt;br /&gt;
  return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy-Val&amp;quot;,0) * ( 10 ** $scale) / 1000);;},&lt;br /&gt;
  &lt;br /&gt;
AC-Power:(AC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
&lt;br /&gt;
DC-Power:(DC-Power-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Current:(DC-Current-Scale.*) {&lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Current-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
  &lt;br /&gt;
DC-Voltage:(DC-Voltage-Scale.*) { &lt;br /&gt;
 my $scale = ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Scale&amp;quot;,0);&lt;br /&gt;
 return (ReadingsVal (&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Voltage-Val&amp;quot;,0) * ( 10 ** $scale));;},&lt;br /&gt;
 &lt;br /&gt;
Zustand:(Status.*) {&lt;br /&gt;
   my $Zus = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Status&amp;quot;,0);&lt;br /&gt;
   my $rueck = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;Zustand&amp;quot;,0);&lt;br /&gt;
   if (($Zus == 2) and (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 600)) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 600&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Nachtmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   elsif  (InternalVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;INTERVAL&amp;quot;,&amp;quot;&amp;quot;) != 60) {&lt;br /&gt;
     fhem(&amp;quot;set KeSolarEdge interval 60&amp;quot;);&lt;br /&gt;
	 $rueck = &amp;quot;Tagmodus&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   return ($rueck);;&lt;br /&gt;
 }&lt;br /&gt;
   webCmdLabel {sprintf(&amp;quot;AC-Energy %.3f&amp;quot;,ReadingsVal(&amp;quot;Solaredge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0));;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Dummys anlegen===&lt;br /&gt;
&lt;br /&gt;
Zur Verwendung der &amp;quot;at&amp;quot;s werden Dummys benötigt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dum_pv_energyday_log dummy &lt;br /&gt;
define dum_pv_energyday_read dummy &lt;br /&gt;
define dum_pv_energymonth_log dummy &lt;br /&gt;
define dum_pv_energymonth_read dummy&lt;br /&gt;
define dum_pv_energytoday dummy&lt;br /&gt;
define dum_pv_energytomonth dummy&lt;br /&gt;
define dum_pv_energytoweek dummy&lt;br /&gt;
define dum_pv_energytoyear dummy&lt;br /&gt;
define dum_pv_energyweek_log dummy&lt;br /&gt;
define dum_pv_energyweek_read dummy&lt;br /&gt;
define dum_pv_energyyear_log dummy&lt;br /&gt;
define dum_pv_energyyear_read dummy&lt;br /&gt;
define dum_pvdcpower dummy&lt;br /&gt;
define dum_pvdcvolt dummy&lt;br /&gt;
define dum_pvenergy dummy&lt;br /&gt;
define dum_pvloss dummy&lt;br /&gt;
define dum_pvpower_log dummy &lt;br /&gt;
define dum_pvpower_read dummy &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== notify device in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Auslesen der Daten, getriggert vom ModbusAttr:&lt;br /&gt;
&lt;br /&gt;
prg_solaredge&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeSolarEdge:DC-Power:.* {&lt;br /&gt;
  # 16.2.2018 Markus Loeben&lt;br /&gt;
  # liest Solaredge aus und füllt die Werte in dummys, damit sie weiter verwertet werden können&lt;br /&gt;
  my $ACE = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,0);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: ACE &amp;quot; . $ACE;&lt;br /&gt;
  my $day = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $week = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: day &amp;quot; . $day;&lt;br /&gt;
  my $month = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: month &amp;quot; . $month;&lt;br /&gt;
  my $year = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_solaredge: year &amp;quot; . $year;&lt;br /&gt;
  #.. die geleistete Energie größer 0 ist (was immer sein sollte, aber leider nicht immer ist) -&amp;gt; laufende Werte berechnen&lt;br /&gt;
  if ($ACE &amp;gt; 0) {&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoday &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $day)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoweek &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $week)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytomonth &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $month)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energytoyear &amp;quot; . sprintf (&amp;quot;%.2f&amp;quot;,($ACE - $year)));&lt;br /&gt;
  }&lt;br /&gt;
  #Log 1, &amp;quot;at_Solaredge: PV-Energy &amp;quot; . $ACE . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  #Leistung auslesen&lt;br /&gt;
  my $ACP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Power&amp;quot;,0);&lt;br /&gt;
  my $DCP = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;DC-Power&amp;quot;,0);&lt;br /&gt;
  if ($DCP &amp;gt; 0) {&lt;br /&gt;
  # Verlustleistung berechnen&lt;br /&gt;
    fhem (&amp;quot;set dum_pvloss &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;, ($DCP - $ACP)));&lt;br /&gt;
    my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
    #Falls die größer ist als alles bis: ablegen&lt;br /&gt;
    if ($DCP &amp;gt; $MP) {&lt;br /&gt;
      fhem (&amp;quot;set dum_pv_power_read &amp;quot; . $DCP);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===at device in FHEM===&lt;br /&gt;
&lt;br /&gt;
Tägliches Auswerten für spätere SVGs:&lt;br /&gt;
&lt;br /&gt;
at_midnight&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*23:59 {&lt;br /&gt;
  # Abspeichern der täglichen, wöchentlichen und monatlichen Werte 16.3.18 Loeben;&lt;br /&gt;
  use Time::Local;&lt;br /&gt;
  my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime(time()+61);&lt;br /&gt;
  #Werte einlesen&lt;br /&gt;
  my $ace = ReadingsVal(&amp;quot;KeSolarEdge&amp;quot;,&amp;quot;AC-Energy&amp;quot;,-1);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight AC-Energy&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  #Tag updaten&lt;br /&gt;
  # PV&lt;br /&gt;
  my $aceread = Value(&amp;quot;dum_pv_energyday_read&amp;quot;);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read &amp;quot; . $aceread;&lt;br /&gt;
  my $aceday = ($ace - $aceread);&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
  fhem (&amp;quot;set dum_pv_energyday_read &amp;quot; . $ace);&lt;br /&gt;
  Log 5, &amp;quot;at_midnight dum_pv_energyday_read&amp;quot; . &amp;quot; &amp;quot; . $ace;&lt;br /&gt;
  my $MP = Value(&amp;quot;dum_pv_power_read&amp;quot;);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_log &amp;quot; . $MP);&lt;br /&gt;
  fhem(&amp;quot;set dum_pv_power_read 0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  #Wochenwerte speichern;&lt;br /&gt;
  if ($Pwday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyweek_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($ace - $aceread)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyweek_read &amp;quot; . $ace);&lt;br /&gt;
  }  &lt;br /&gt;
  #Monatswerte speichern;&lt;br /&gt;
  if ($Pmday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energymonth_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energymonth_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
  #Jahreswerte speichern;&lt;br /&gt;
  if ($Pyday == 1) {&lt;br /&gt;
    $aceread = Value(&amp;quot;dum_pv_energyyear_read&amp;quot;);&lt;br /&gt;
    $aceday = ($ace - $aceread);&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_log &amp;quot; . sprintf(&amp;quot;%.1f&amp;quot;,($aceday)));&lt;br /&gt;
    fhem (&amp;quot;set dum_pv_energyyear_read &amp;quot; . $ace);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
&lt;br /&gt;
Das ModbusDevice legt sich ein eigenes Log an. Um aber übersichtliche Grafiken zu bekommen werden die Daten des Dummy benötigt. Hier hilft ein Logfile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; define FileLog_KePv Filelog %L/pv-%Y.log dum_pv*.* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grafiken==&lt;br /&gt;
&lt;br /&gt;
{{Todo | Beschreibungen zu SVG hinterlegen }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/se-inverter-installation-guide-de.pdf Installationsanleitung]&lt;br /&gt;
#Solaredge: [https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note-de.pdf Sunspec Protokoll]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:SolarEdge_Wechselrichter&amp;diff=38428</id>
		<title>Diskussion:SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:SolarEdge_Wechselrichter&amp;diff=38428"/>
		<updated>2023-07-04T08:44:21Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kann jemand was damit anfangen? --[[Benutzer:BenMarloe|BenMarloe]] ([[Benutzer Diskussion:BenMarloe|Diskussion]]) 23:20, 6. Apr. 2018 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Allgemeinerer Name sinnvoll? ==&lt;br /&gt;
Mir hat der Artikel sehr bei der Einrichtung meines SolarEdge SE7K Wechselrichters geholfen.&lt;br /&gt;
Da SolarEdge seine Wechselrichter durchweg nach dem Schema &amp;quot;SE&amp;lt;Nennleistung in Kilowatt&amp;gt;K&amp;quot; benennt, ohne dass sich dabei die Schnittstellen unterscheiden, wäre ein allgemeinerer Seitenname eher passend. Vielleicht &amp;quot;SolarEdge Wechselrichter&amp;quot;?&lt;br /&gt;
--[[Benutzer:Siggi|Siggi]] ([[Benutzer Diskussion:Siggi|Diskussion]]) 21:07, 8. Sep. 2022 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ich hätte nach der Integration meiner SE8k noch Erweiterungen zur Einbindung von SolarEdge Energiezählern und Batteriespeichern. Diese würde ich hier einfügen und dabei die Seite wie von [[Benutzer:Siggi|Siggi]] vorgeschlagen verallgemeinern, wenn es keine Einwände gibt.&lt;br /&gt;
--[[Benutzer:Reibuehl|Reibuehl]] ([[Benutzer Diskussion:Reibuehl|Diskussion]]) 11:19, 27. Jun. 2023 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Umbenennung erscheint sinnvoll. Nachdem es nur einen Intra-Wiki Link auf die Seite gibt, kann ich die Seite gern auch ohne Weiterleitung auf den neuen Namen verschieben. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 16:27, 28. Jun. 2023 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: Dann verschiebe sie bitte wie von Siggi vorgeschlagen auf &amp;quot;SolarEdge Wechselrichter&amp;quot;. Ich arbeite dann die Erweiterungen ein. --[[Benutzer:Reibuehl|Reibuehl]] ([[Benutzer Diskussion:Reibuehl|Diskussion]]) 10:44, 4. Jul. 2023 (CEST)&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:SolarEdge_Wechselrichter&amp;diff=38419</id>
		<title>Diskussion:SolarEdge Wechselrichter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:SolarEdge_Wechselrichter&amp;diff=38419"/>
		<updated>2023-06-27T09:20:21Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Allgemeinerer Name sinnvoll? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kann jemand was damit anfangen? --[[Benutzer:BenMarloe|BenMarloe]] ([[Benutzer Diskussion:BenMarloe|Diskussion]]) 23:20, 6. Apr. 2018 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Allgemeinerer Name sinnvoll? ==&lt;br /&gt;
&lt;br /&gt;
Mir hat der Artikel sehr bei der Einrichtung meines SolarEdge SE7K Wechselrichters geholfen.&lt;br /&gt;
Da SolarEdge seine Wechselrichter durchweg nach dem Schema &amp;quot;SE&amp;lt;Nennleistung in Kilowatt&amp;gt;K&amp;quot; benennt, ohne dass sich dabei die Schnittstellen unterscheiden, wäre ein allgemeinerer Seitenname eher passend. Vielleicht &amp;quot;SolarEdge Wechselrichter&amp;quot;?&lt;br /&gt;
--[[Benutzer:Siggi|Siggi]] ([[Benutzer Diskussion:Siggi|Diskussion]]) 21:07, 8. Sep. 2022 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ich hätte nach der Integration meiner SE8k noch Erweiterungen zur Einbindung von SolarEdge Energiezählern und Batteriespeichern. Diese würde ich hier einfügen und dabei die Seite wie von [[Benutzer:Siggi|Siggi]] vorgeschlagen verallgemeinern, wenn es keine Einwände gibt.&lt;br /&gt;
--[[Benutzer:Reibuehl|Reibuehl]] ([[Benutzer Diskussion:Reibuehl|Diskussion]]) 11:19, 27. Jun. 2023 (CEST)&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=31209</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=31209"/>
		<updated>2019-09-17T14:54:09Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Shelly */ Beispiel für Leistungsabhängige Statusmeldung beim Shelly Plug S&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT verwenden, beachten Sie bitte, dass der MQTT2_CLIENT die ursprüngliche Herkunft der über MQTT verteilten Informationen nicht kennt. Daher ergeben sich in der Anwendung kleinere Unterschiede, zu deren Verständnis die diesbezüglichen [[MQTT2_CLIENT#Anwendung|Hinweise zu MQTT2_CLIENT]] bekannt sein sollten.}}Zur Einbindung von Geräten, welche zur Nutzung des MQTT-Protokols konfiguriert werden können und darüber mit einem MQTT-Server (früher: Broker) kommunizieren, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE|MQTT2_DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&amp;lt;ref&amp;gt;Beachten Sie bei mehrkanaligen Geräten, dass jeweils nur ein Hauptkanal mittels setExtensions verwaltet werden kann! U.a. aus diesen Grund ist es meist sinnvoller, die &#039;&#039;split&#039;&#039;-Varianten der attrTemplate-Einrichtung zu verwenden.&amp;lt;/ref&amp;gt;&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Allgemeine Einstellungen und Hinweise ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Beachten Sie, dass für autocreate in Verbindung mit MQTT2_SERVER &#039;&#039;&#039;zwingend&#039;&#039;&#039; jeder über MQTT kommunizierende Client eine ClientID angeben muß. Passen Sie daher ggf. die Einstellungen Ihres Geräts an. Manche Geräte verwenden auch &amp;quot;Wegwerf&amp;quot;-ClientID&#039;s. Für diese empfiehlt es sich, ggf. dann die durch autocreate erstellten Geräte nachzubearbeiten und die ClientID-Angabe v.a. aus den Inhalten des readingList-Attributs zu entfernen.}}Die nachfolgenden Beispiele gelingen am einfachsten mit &#039;&#039;&#039;MQTT2_SERVER als Server (&amp;quot;Broker&amp;quot;)&#039;&#039;&#039;, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; nicht deaktiviert sein, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines {{Link2CmdRef|Anker=autocreate|Lang=en|Label=autocreate}}-Device (&#039;&#039;TYPE=autocreate&#039;&#039;) ebenfalls aktiv ist.&amp;lt;/ref&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;lt;ref&amp;gt;MQTT2_SERVER verwendet als default-Einstellung für &#039;&#039;autocreate&#039;&#039; &#039;&#039;simple&#039;&#039;, ohne dass ein entsprechendes Attribut gesetzt werden müßte. Die Einstellung &#039;&#039;complex&#039;&#039; empfiehlt sich in der Regel nicht; diese ist jedoch dann zu empfehlen, wenn das Device entweder verschachtelte JSON-Array-Strukturen liefert oder bestimmte Readings nicht gefüllt werden sollen.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT-Einstellungen in den Geräten ===&lt;br /&gt;
Die Beispiele gehen davon aus, dass die einzubindenden Geräte &#039;&#039;&#039;&#039;&#039;mit den default-Einstellungen&#039;&#039;&#039;&#039;&#039; für MQTT betrieben werden, wenn man von den Angaben zum Server und ggf. der Gerätekennung absieht. Es sollten also insbesondere &#039;&#039;&#039;keine Veränderungen der topic-Pfade&#039;&#039;&#039; vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
{{Hinweis|Wird ein CC2531 auf demselben Linux-Computer verwendet, auf dem auch FHEM installiert ist, kann es vorkommen, dass FHEM diesen mit einem CUL verwechselt und durch &#039;&#039;initialUsbCheck&#039;&#039; in FHEM einbindet, wodurch er für den zigbee2mqtt-Dienst nicht mehr verfügbar ist. Dann sollte &#039;&#039;initialUsbCheck&#039;&#039; deaktiviert und das automatisch angelegte CUL-Device wieder gelöscht werden. Weiter sollte der CC2531 auch in FHEM &#039;&#039;&#039;und&#039;&#039;&#039; zigbee2mqtt &#039;&#039;[[Mehrere USB-Geräte einbinden|by-id]]&#039;&#039; eingebunden werden, um Probleme beim gleichzeitigen Einsatz anderer Geräte, die &#039;&#039;/dev/ttyACMx&#039;&#039; belegen können, zu vermeiden (betrifft z.B. CUL/MapleCUL ).}}&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. &lt;br /&gt;
{{Hinweis|[[Datei:Tasmota mqtt config.png|120px|thumb|right]]Vor allem, aber nicht nur bei Verwendung des MQTT2_CLIENT als IO, ist es empfehlenswert, in der MQTT-Konfiguration der tasmota-Geräte für den Parameter &#039;&#039;&amp;lt;nowiki&amp;gt;topic = %topic% (sonoff)&amp;lt;/nowiki&amp;gt;&#039;&#039; ebenfalls die dynamisch aus der Chip-ID erzeugte Kennung &#039;&#039;DVES_%06X&#039;&#039; zu verwenden. (Kopieren Sie einfach diese Zeichenkette aus dem  Eingabefeld für &#039;&#039;&amp;quot;client ...&amp;quot;&#039;&#039;, siehe nebenstehende Abbildung). Die eigentliche Umbenennung zu einem &amp;quot;sprechenden Namen&amp;quot; kann dann innerhalb von FHEM - mittels &#039;&#039;rename&#039;&#039; oder ggf. mit einem &#039;&#039;alias&#039;&#039; - erfolgen.}}&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/DVES_9B01BD/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/DVES_9B01BD/POWER on\&lt;br /&gt;
    off cmnd/DVES_9B01BD/POWER off\&lt;br /&gt;
    reboot cmnd/DVES_9B01BD/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly Plug S ===&lt;br /&gt;
Über die Lwistungsmessung des Shelly Plug S lässt sich sehr einfach auch eine Erkennung des Betriebszustandes des angeschlossenen Gerätes realisieren. Dazu stellt man zuerst fest, wieviel Leistung das Gerät in jedem Betriebszustand verbraucht und kann dann z.B. für einen angeschlossenen Fernseher, der im Standby 1 Watt und im Betrieb &amp;gt; 100 Watt verbraucht, den Zustand erkennen und als on/off Status anzeigen. Dazu wird das state Reading wie folgt definiert:&lt;br /&gt;
  attr readingList shellies/shellyplug-s-123456/relay/0/power:.* { { state =&amp;gt; $EVTPART0&amp;lt;100?&amp;quot;off&amp;quot;:&amp;quot;on&amp;quot; } }&lt;br /&gt;
Der Status des MQTT2 Devices zeigt dann bei &amp;lt;100W &amp;quot;off&amp;quot; und sonst &amp;quot;on&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
Die Einstellungen für &#039;&#039;MQTT topic pattern&#039;&#039; usw. können auf den default-Werten&amp;lt;ref&amp;gt;Diese sind: &amp;lt;br&amp;gt;&#039;&#039;milight/:device_id/:device_type/:group_id&#039;&#039; für &amp;quot;topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/updates/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;update topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/states/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;state topic pattern&amp;quot;. Der Autor hat derzeit folgende Infotypen zum Senden markiert: &amp;quot;status, brightness, hue, color, mode, color_temp, bulb_mode, computed_color, hex_color&amp;quot; (enthält eventuell zu viele Angaben. Bei einem Eventhandler muß man uU. darauf achten, dass kurz hintereinander zweimal dasselbe Event kommen kann (für ON/OFF)).&amp;lt;/ref&amp;gt; belassen werden, für die seit Mitte 2019 vorhandene Option, eine LWT-Message zu senden (&#039;&#039;MQTT Client Status Topic&#039;&#039;), tragen Sie &#039;&#039;milight/LWT&#039;&#039; ein und aktivieren &#039;&#039;Detailed&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
==== Fernbedienung als Input-Device nutzen ====&lt;br /&gt;
In diesem {{Link2Forum|Topic=103493|LinkText=Thread}} ist dargestellt, wie man eine Fernbedingung des Typs FUT089 dazu verwenden kann, einen [[MPD]] oder Rollladenaktoren zu steuern, oder diese Fernbedienung für [[Hue#HUE-Device|HUEDevice]]-Leuchtmittel zu nutzen.&lt;br /&gt;
Um hier nur Differenz-Meldungen zu erhalten und doppelte Events zu verhindern, sollte hier die readingList so angepaßt werden, dass nur Messages aus dem &amp;quot;updates&amp;quot;-Zweig ausgewertet werden: &lt;br /&gt;
 defmod MiLight_RC1_0 MQTT2_DEVICE milight_0xABCD_0&lt;br /&gt;
 attr MiLight_RC1_0 readingList milight/updates/0xABCD/fut089/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0xABCD/fut089/0:.* {}&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
An dieser Stelle sollen lediglich die Grundzüge erläutert werden, eine ausführliche Anleitung über die Konfiguration des [[EBUS-MQTT2|eBus mit MQTT2 gibt es hier]].&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
Vorausgesetzt wird ein laufender eBus-Dämon. Dessen Einrichtung wird im Artikel [[EBUS#Software|EBUS]] beschrieben.&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) ist die Kommunikation über MQTT zu aktivieren und die Topic-Struktur festzulegen, z.B. &#039;&#039;ebusd/%circuit/%name&#039;&#039;.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der &#039;&#039;readingList&#039;&#039; enthalten, die vom ebus stammen. Da wir die &#039;&#039;readingList&#039;&#039; anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen zumindest sämtliche &#039;&#039;readingList&#039;&#039;-Attribute entsprechend bereinigt oder gelöscht werden; in der Regel ist es einfacher, diese Geräte nach dem Deaktivieren des autocreate am IO zu löschen.&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT als IO nutzen, sollte für das weitere Vorgehen eine Kopie des MQTT2-&amp;quot;Sammeldevices&amp;quot; genutzt werden, und dessen &#039;&#039;CID&#039;&#039; auf &#039;&#039;ebusd&#039;&#039; geändert werden. Nach Anwendung des ebusd-splitter-templates müssen dann alle den ebus betreffenden Einträge aus der &#039;&#039;readingList&#039;&#039; des &amp;quot;Sammeldevices&amp;quot; gelöscht werden oder diese ganz gelöscht.}}Ist der ebus-Dämon lauffähig und für MQTT konfiguriert, sendet dieser regelmäßige Messages. &lt;br /&gt;
&lt;br /&gt;
Sind die Vorbereitungen abgeschlossen, aktivieren wir &#039;&#039;autocreate&#039;&#039; wieder, allerdings wählen wir als autocreate-Methode &#039;&#039;complex&#039;&#039; aus, da der eBus-Dämon teilweise&amp;lt;ref&amp;gt;Dies betrifft vorrangig die Statusmeldungen&amp;lt;/ref&amp;gt; eine weiter verschachtelte JSON-Struktur zum Versenden der Informationen verwendet als üblich. Danach wird wie bei den anderen o.g. Geräten automatisch ein neues MQTT2_DEVICE angelegt&amp;lt;ref&amp;gt;Bei Verwendung des MQTT2_CLIENT wird dann die &#039;&#039;readingList&#039;&#039; am bereits definierten MQTT2_DEVICE aus der Kopie des &amp;quot;Sammeldevice&amp;quot; automatisch wieder erstellt bzw. gefüllt.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Auf das von &#039;&#039;autocreate&#039;&#039; erstellte MQTT2_DEVICE wird nunmehr das template &#039;&#039;E_01a_eBus_daemon_splitter&#039;&#039; angewendet. Nach einiger Zeit sollte sowohl die readingList an diesem Device erweitert worden sein, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt. &lt;br /&gt;
Dieses Device liefert zukünftig Readings zum Dämon selbst, wie dessen &#039;&#039;uptime&#039;&#039;, alle weiteren am eBus angeschlossenen Teilnehmer werden dagegen zweckmäßigerweise durch ein oder mehrere weitere MQTT2_DEVICE-Geräte dargestellt. &lt;br /&gt;
==== &amp;quot;ebusd_bai&amp;quot; und weitere Geräte ====&lt;br /&gt;
{{Hinweis|Der eBus-Dämon sendet nicht alle Informationen zu allen am eBus angeschlossenen Geräte automatisch. Diese müssen teilweise erst aktiv angefragt werden. Wie das im einzelnen erfolgen kann, ist dem o.g. Detailartikel zu entnehmen.}}&lt;br /&gt;
Funktioniert die Kommunikation zwischen dem eBus-Dämon und FHEM, sollte nach einigen Minuten zumindest ein weiteres Gerät namens &#039;&#039;MQTT2_ebus_bai&#039;&#039; angelegt worden sein.&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Batterie%C3%BCberwachung&amp;diff=28837</id>
		<title>Batterieüberwachung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Batterie%C3%BCberwachung&amp;diff=28837"/>
		<updated>2018-12-31T12:42:22Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Fehlender : eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verschiedene batteriebetriebene Geräte ([[:Kategorie:HomeMatic Components|Homematic]], RFXtrx, ZWave,..) übermitteln unter anderem den Zustand der eingelegten Batterie. Bei diesen kann der Batteriestatus übersichtlich dargestellt und / oder aktiv überwacht werden. Bei Geräten ohne eigenen Batteriestatus muss man diesen &amp;quot;nachrüsten&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Geräte mit Batteriestatus ==&lt;br /&gt;
=== Übersichtsdarstellung per readingsGroup ===&lt;br /&gt;
Mit Hilfe einer ReadingsGroup kann einfach eine Übersicht aller Geräte mit &amp;quot;battery&amp;quot;-Reading erstellt werden, s. [[ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt|hier]].&lt;br /&gt;
&lt;br /&gt;
=== Benachrichtigung per notify ===&lt;br /&gt;
Um Ausfälle frühzeitig zu erkennen, kann man sich per E-Mail benachrichtigen lassen, sobald eine Batteriemeldung mit etwas anderem als &amp;quot;ok&amp;quot; gesendet wird (z.B. &amp;quot;low&amp;quot;). Zusätzlich erzeugt der unten stehende Code einen Eintrag im Logfile. Der Code ist für die Raw Definition und nicht für den DEF Editor!&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { \&lt;br /&gt;
  { FB_mail(&#039;recipient@internet.de&#039;, &#039;FHEM Batteriewarnung&#039;, $NAME.&#039;: &#039;.$EVENT)};; \&lt;br /&gt;
   Log 3, &amp;quot;$NAME : Batteriewarnung $EVENT&amp;quot;;; \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Für Nutzer eines [[HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat|HM-CC-RT-DN]] muss der Code anders aussehen, da mit diesem Thermostat erstmalig der aktuelle Spannungswert der Batterie gesendet wird, also z.B.:&lt;br /&gt;
&lt;br /&gt;
 UG.Treppe.Heizung batteryLevel: 3.1 V&lt;br /&gt;
&lt;br /&gt;
Man würde bei der Verwendung des o.g. Codes bei jeder Batteriemeldung eines HM-CC-RT-DN eine E-Mail erhalten. Daher muss der o.g. Code wie folgt geändert werden (Doppelpunkt hinter &amp;quot;[Bb]attery&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery:|.*:[Bb]atteryS { if($EVENT !~ m/ok/) { \&lt;br /&gt;
  { FB_mail(&#039;recipient@internet.de&#039;, &#039;FHEM Batteriewarnung&#039;, $NAME.&#039;: &#039;.$EVENT)};; \&lt;br /&gt;
   Log 3, &amp;quot;$NAME: Batteriewarnung $EVENT&amp;quot;;; \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: FB_mail setzt die Installation auf einer FritzBox voraus. Für andere Hardware-/OS-Plattformen ist die Vorgehensweise unter dem Titel [[E-Mail_senden]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Wer statt einer email lieber eine Pushover-Nachricht auf sein Smartphone bekommen möchte, kann diesen Code benutzen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery:|.*:[Bb]atteryS { if($EVENT !~ m/ok/) { \                                                                                                                                        &lt;br /&gt;
  { fhem (&amp;quot;set PushoverChristoph msg FHEM Batteriewarnung, $NAME: $EVENT:\nBatterien sollten demnächst gewechselt werden!&amp;quot;);; \                                                                            &lt;br /&gt;
   Log 3, &amp;quot;$NAME: Batteriewarnung $EVENT&amp;quot;;; \                                                                                                                                                              &lt;br /&gt;
   } \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich muß dafür eine Pushover-Installation in fhem vorhanden sein - sonst bitte gem. [[Pushover]] nachholen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testen kann man dies z.B. mit &amp;lt;code&amp;gt;trigger HeizungWZ Battery:low&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sollte auch darauf achten, dass sich das Ereignis, auf das man triggert, nicht zu häufig wiederholt (z.B. durch das Attribut &amp;lt;code&amp;gt;event-on-change-reading&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Geräte ohne Batteriestatus ==&lt;br /&gt;
Bei Geräten ohne Reading für den Batteriestatus kann man diesen auf verschiedene Weisen schätzen und als Reading eintragen. Dies funktioniert aber natürlich nur, wenn das Gerät sendet - bei einem rein empfangenden Aktor wie dem [[FHT 8v direkt ansprechen|FHT Stellantrieb]] klappt es also nicht... &lt;br /&gt;
&lt;br /&gt;
=== Erweiterung des Geräts um battery-Reading ===&lt;br /&gt;
Mit Hilfe von {{Link2CmdRef|Lang=de|Anker=userReadings|Label=userReadings}} kann man recht einfach einen Batteriestatus schätzen und als Reading bereitstellen. Dann greift auch direkt die oben beschriebene Auswertung.&lt;br /&gt;
&lt;br /&gt;
Die Idee ist, den zeitlichen Abstand des aktuellen Timestamps mit dem letzten geloggten Timestamp zu vergleichen und daraus auf den Batteriestatus zu schliessen - bspw. Abstand &amp;gt; 10min = Batterie low.&lt;br /&gt;
&lt;br /&gt;
Dazu muss lediglich folgendes userReading für jedes batteriebetriebene Device (ohne Batteriestatus) angelegt werden (um bei &amp;gt;10min &amp;quot;low&amp;quot; zu setzen): &lt;br /&gt;
&lt;br /&gt;
; Konfiguration:&lt;br /&gt;
Lediglich der Schwellwert (600) braucht nach Wunsch angepasst zu werden, alles andere passt automatisch (vgl. [[Notify#Hinweise]]).&lt;br /&gt;
&lt;br /&gt;
; Im Webinterface:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
battery { return &amp;quot;ok&amp;quot; if ( (time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)) - time_str2num(OldTimestamp($NAME))) &amp;lt; 600 ); return &amp;quot;low&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Alternativ im Config-File:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MeinSensor userReadings battery { return &amp;quot;ok&amp;quot; if ( (time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)) - time_str2num(OldTimestamp($NAME))) &amp;lt; 600 ); return &amp;quot;low&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Erläuterung:&lt;br /&gt;
: &amp;lt;code&amp;gt;$NAME&amp;lt;/code&amp;gt; - ist die Variable für das Device (und braucht nicht angepasst zu werden)&lt;br /&gt;
: &amp;lt;code&amp;gt;battery {...}&amp;lt;/code&amp;gt; - Name des userreadings mit Spezifikation, vgl. {{Link2CmdRef|Lang=de|Anker=userReadings}}.&lt;br /&gt;
: &amp;lt;code&amp;gt;return &amp;quot;ok&amp;quot; if ( ... ); return &amp;quot;low&amp;quot;&amp;lt;/code&amp;gt; - Spezifikation: Reading = &amp;quot;ok&amp;quot;, wenn if erfüllt, sonst &amp;quot;low&amp;quot;&lt;br /&gt;
: &amp;lt;code&amp;gt;time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)&amp;lt;/code&amp;gt; - Aktueller Timestamp in Sekunden, vgl. {{Link2CmdRef|Lang=de|Anker=perl}}, [[Notify#Hinweise]]&lt;br /&gt;
: &amp;lt;code&amp;gt;time_str2num(OldTimestamp($NAME))&amp;lt;/code&amp;gt; - Letzter Timestamp im Log in Sekunden (egal ob FileLog oder DbLog), vgl. {{Link2CmdRef|Lang=de|Anker=perl}}, [[Notify#Hinweise]]&lt;br /&gt;
: &amp;lt;code&amp;gt;600&amp;lt;/code&amp;gt; - Schwellwert für &amp;quot;low&amp;quot; (600 sec = 10 min), nach Bedarf anpassen&lt;br /&gt;
&lt;br /&gt;
=== Alternativ per Skript ===&lt;br /&gt;
Andere Komponenten, wie z. B. [[:Kategorie:FS20 Components|FS20 Komponenten]], übermitteln keinen Batteriestatus. &lt;br /&gt;
&lt;br /&gt;
Um dort dennoch einen Test darauf zu machen, ob die Batterie evtl. leer ist, kann man z. B. prüfen, wann der letzte Status des jeweiligen Gerätes empfangen wurde, etwa mit folgender Funktion in [[99_myUtils_anlegen|99_myUtils.pm]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sub check_if_alive($$) {&lt;br /&gt;
  # Expects:&lt;br /&gt;
  # 1. Devicename to be checked&lt;br /&gt;
  # 2. Age in hours, after the expiry of which with no new state the device will be considered as dead.&lt;br /&gt;
  # Returns:&lt;br /&gt;
  # 0 -&amp;gt; Device dead&lt;br /&gt;
  # 1 -&amp;gt; Device alive&lt;br /&gt;
  # 2 -&amp;gt; Error&lt;br /&gt;
  my ($Device,$hours_threshold) = @_;&lt;br /&gt;
  my ($Device) = @_;&lt;br /&gt;
  my $now = time;&lt;br /&gt;
  my $Timestamp = ReadingsTimestamp($Device,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;);&lt;br /&gt;
  if ($Timestamp eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    return 2;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @splitdatetime = split(/ /,$Timestamp);&lt;br /&gt;
  my @splitdate = split(/-/, $splitdatetime[0]);&lt;br /&gt;
  my @splittime = split(/:/, $splitdatetime[1]);&lt;br /&gt;
  my $last_state_time =  timelocal($splittime[2], $splittime[1], $splittime[0], $splitdate[2], $splitdate[1]-1, $splitdate[0]);&lt;br /&gt;
  my $age_in_hours = ($now - $last_state_time) / 3600;&lt;br /&gt;
&lt;br /&gt;
  if ($age_in_hours &amp;gt; $hours_threshold) {&lt;br /&gt;
    Log 1, (&amp;quot;check_if_alive: $Device dead, last state was $age_in_hours hours ago&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion kann man z.B. in einem at je zu prüfendem Gerät regelmäßig (z. B. einmal am Tag um 05:55 Uhr) aufrufen, und testen, ob die letzten 12 Stunden etwas empfangen wurde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*05:55:55 { &lt;br /&gt;
  check_if_alive(&amp;quot;KS300&amp;quot;, 12);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KS300 ist dabei der Name des Devices in fhem. &lt;br /&gt;
&lt;br /&gt;
Wenn das Gerät nicht geantwortet hat, erzeugt die oben vorgeschlagene Funktion einen Logeintrag.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Dieser Batterietest schlägt natürlich auch an, wenn die FS20 Geräte noch funktionieren, aber der CUL zum Empfangen der Signale nicht mehr funktioniert. In dem Fall sind dann auf einen Schlag angeblich alle Batterien leer. Um dies zumindest teilweise abzufangen, könnte man vor dem Erzeugen des Logeintrags noch auf den state des CUL testen, dass dieser nicht &amp;quot;disconnected&amp;quot; ist.&lt;br /&gt;
&lt;br /&gt;
==== Visualisierung ====&lt;br /&gt;
Der Abschnitt Links unten enthält einen Verweis, wie man den Batteriestatus visuell anzeigen kann. Das funktioniert mit der oben vorgeschlagenen Funktion mit einigen Ergänzungen auch, wenn das Gerät selbst keinen Batteriestatus anzeigt.&lt;br /&gt;
&lt;br /&gt;
Dafür braucht man einen zusätzlichen Dummy je zu überwachendem Gerät, mit dem Namen dum_&amp;lt;zu_überwachendes_Gerät&amp;gt;_dead. Für das Gerät KS300 heißt dieser dummy also z. B. dum_KS300_dead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Internals: &lt;br /&gt;
   NAME       dum_KS300_dead &lt;br /&gt;
   NR         795 &lt;br /&gt;
   STATE      nein &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
   Readings: &lt;br /&gt;
     2015-04-28 07:47:48   state           nein &lt;br /&gt;
Attributes: &lt;br /&gt;
   devStateIcon ja:measure_battery_50@red nein:measure_battery_100@green&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser dummy soll hier die Zustände &amp;quot;ja&amp;quot; und &amp;quot;nein&amp;quot; annehmen können. Bei ja ist ihm über devStateIcon ein rotes Icon einer eher leeren Batterie zugewiesen, bei nein ein grünes Icon einer vollen Batterie. &lt;br /&gt;
&lt;br /&gt;
Nun muss noch die oben vorgeschlagene Funktion angepasst werden, um den Zustand des dummy entsprechend dem ermittelten Batteriestatus neu zu setzen. Dafür wird die Abfrage des Alters am Ende der Funktion um eine Zeile erweitert, die den Status des dummy setzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  if ($age_in_hours &amp;gt; $hours_threshold) {&lt;br /&gt;
    Log 1, (&amp;quot;check_if_alive: $Device dead, last state was $age_in_hours hours ago&amp;quot;);&lt;br /&gt;
    fhem(&amp;quot;set dum_&amp;quot;.$Device.&amp;quot;_dead ja&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    fhem(&amp;quot;set dum_&amp;quot;.$Device.&amp;quot;_dead nein&amp;quot;);&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Den Dummy mit diesem devStateIcon kann man so der unter &amp;quot;Links&amp;quot; unten vorgeschlagenen readingsGroup hinzufügen, und damit auch Geräte ohne eigenen Batteriestatus überwachen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt|visuelle Batterieüberwachung mit readingsGroup]]&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=perl}} - Perl specials&lt;br /&gt;
* [[Notify#Hinweise|Hinweise zu Variablen]] (ansonsten auch an div. Stellen in der {{Link2CmdRef}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Batterie%C3%BCberwachung&amp;diff=28836</id>
		<title>Batterieüberwachung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Batterie%C3%BCberwachung&amp;diff=28836"/>
		<updated>2018-12-31T12:35:11Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Anpassung laut Forumsvorschlag von Forumuser &amp;quot;Paul&amp;quot; zur Unterstützung des BatteryStatus Readings.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verschiedene batteriebetriebene Geräte ([[:Kategorie:HomeMatic Components|Homematic]], RFXtrx, ZWave,..) übermitteln unter anderem den Zustand der eingelegten Batterie. Bei diesen kann der Batteriestatus übersichtlich dargestellt und / oder aktiv überwacht werden. Bei Geräten ohne eigenen Batteriestatus muss man diesen &amp;quot;nachrüsten&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Geräte mit Batteriestatus ==&lt;br /&gt;
=== Übersichtsdarstellung per readingsGroup ===&lt;br /&gt;
Mit Hilfe einer ReadingsGroup kann einfach eine Übersicht aller Geräte mit &amp;quot;battery&amp;quot;-Reading erstellt werden, s. [[ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt|hier]].&lt;br /&gt;
&lt;br /&gt;
=== Benachrichtigung per notify ===&lt;br /&gt;
Um Ausfälle frühzeitig zu erkennen, kann man sich per E-Mail benachrichtigen lassen, sobald eine Batteriemeldung mit etwas anderem als &amp;quot;ok&amp;quot; gesendet wird (z.B. &amp;quot;low&amp;quot;). Zusätzlich erzeugt der unten stehende Code einen Eintrag im Logfile. Der Code ist für die Raw Definition und nicht für den DEF Editor!&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { \&lt;br /&gt;
  { FB_mail(&#039;recipient@internet.de&#039;, &#039;FHEM Batteriewarnung&#039;, $NAME.&#039;: &#039;.$EVENT)};; \&lt;br /&gt;
   Log 3, &amp;quot;$NAME : Batteriewarnung $EVENT&amp;quot;;; \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Für Nutzer eines [[HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat|HM-CC-RT-DN]] muss der Code anders aussehen, da mit diesem Thermostat erstmalig der aktuelle Spannungswert der Batterie gesendet wird, also z.B.:&lt;br /&gt;
&lt;br /&gt;
 UG.Treppe.Heizung batteryLevel: 3.1 V&lt;br /&gt;
&lt;br /&gt;
Man würde bei der Verwendung des o.g. Codes bei jeder Batteriemeldung eines HM-CC-RT-DN eine E-Mail erhalten. Daher muss der o.g. Code wie folgt geändert werden (Doppelpunkt hinter &amp;quot;[Bb]attery&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery|.*:[Bb]atteryS { if($EVENT !~ m/ok/) { \&lt;br /&gt;
  { FB_mail(&#039;recipient@internet.de&#039;, &#039;FHEM Batteriewarnung&#039;, $NAME.&#039;: &#039;.$EVENT)};; \&lt;br /&gt;
   Log 3, &amp;quot;$NAME: Batteriewarnung $EVENT&amp;quot;;; \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: FB_mail setzt die Installation auf einer FritzBox voraus. Für andere Hardware-/OS-Plattformen ist die Vorgehensweise unter dem Titel [[E-Mail_senden]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Wer statt einer email lieber eine Pushover-Nachricht auf sein Smartphone bekommen möchte, kann diesen Code benutzen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_batt_chk notify .*:[Bb]attery|.*:[Bb]atteryS { if($EVENT !~ m/ok/) { \                                                                                                                                        &lt;br /&gt;
  { fhem (&amp;quot;set PushoverChristoph msg FHEM Batteriewarnung, $NAME: $EVENT:\nBatterien sollten demnächst gewechselt werden!&amp;quot;);; \                                                                            &lt;br /&gt;
   Log 3, &amp;quot;$NAME: Batteriewarnung $EVENT&amp;quot;;; \                                                                                                                                                              &lt;br /&gt;
   } \&lt;br /&gt;
  } \&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich muß dafür eine Pushover-Installation in fhem vorhanden sein - sonst bitte gem. [[Pushover]] nachholen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testen kann man dies z.B. mit &amp;lt;code&amp;gt;trigger HeizungWZ Battery:low&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sollte auch darauf achten, dass sich das Ereignis, auf das man triggert, nicht zu häufig wiederholt (z.B. durch das Attribut &amp;lt;code&amp;gt;event-on-change-reading&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Geräte ohne Batteriestatus ==&lt;br /&gt;
Bei Geräten ohne Reading für den Batteriestatus kann man diesen auf verschiedene Weisen schätzen und als Reading eintragen. Dies funktioniert aber natürlich nur, wenn das Gerät sendet - bei einem rein empfangenden Aktor wie dem [[FHT 8v direkt ansprechen|FHT Stellantrieb]] klappt es also nicht... &lt;br /&gt;
&lt;br /&gt;
=== Erweiterung des Geräts um battery-Reading ===&lt;br /&gt;
Mit Hilfe von {{Link2CmdRef|Lang=de|Anker=userReadings|Label=userReadings}} kann man recht einfach einen Batteriestatus schätzen und als Reading bereitstellen. Dann greift auch direkt die oben beschriebene Auswertung.&lt;br /&gt;
&lt;br /&gt;
Die Idee ist, den zeitlichen Abstand des aktuellen Timestamps mit dem letzten geloggten Timestamp zu vergleichen und daraus auf den Batteriestatus zu schliessen - bspw. Abstand &amp;gt; 10min = Batterie low.&lt;br /&gt;
&lt;br /&gt;
Dazu muss lediglich folgendes userReading für jedes batteriebetriebene Device (ohne Batteriestatus) angelegt werden (um bei &amp;gt;10min &amp;quot;low&amp;quot; zu setzen): &lt;br /&gt;
&lt;br /&gt;
; Konfiguration:&lt;br /&gt;
Lediglich der Schwellwert (600) braucht nach Wunsch angepasst zu werden, alles andere passt automatisch (vgl. [[Notify#Hinweise]]).&lt;br /&gt;
&lt;br /&gt;
; Im Webinterface:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
battery { return &amp;quot;ok&amp;quot; if ( (time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)) - time_str2num(OldTimestamp($NAME))) &amp;lt; 600 ); return &amp;quot;low&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Alternativ im Config-File:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MeinSensor userReadings battery { return &amp;quot;ok&amp;quot; if ( (time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)) - time_str2num(OldTimestamp($NAME))) &amp;lt; 600 ); return &amp;quot;low&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Erläuterung:&lt;br /&gt;
: &amp;lt;code&amp;gt;$NAME&amp;lt;/code&amp;gt; - ist die Variable für das Device (und braucht nicht angepasst zu werden)&lt;br /&gt;
: &amp;lt;code&amp;gt;battery {...}&amp;lt;/code&amp;gt; - Name des userreadings mit Spezifikation, vgl. {{Link2CmdRef|Lang=de|Anker=userReadings}}.&lt;br /&gt;
: &amp;lt;code&amp;gt;return &amp;quot;ok&amp;quot; if ( ... ); return &amp;quot;low&amp;quot;&amp;lt;/code&amp;gt; - Spezifikation: Reading = &amp;quot;ok&amp;quot;, wenn if erfüllt, sonst &amp;quot;low&amp;quot;&lt;br /&gt;
: &amp;lt;code&amp;gt;time_str2num(ReadingsTimestamp($NAME,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;)&amp;lt;/code&amp;gt; - Aktueller Timestamp in Sekunden, vgl. {{Link2CmdRef|Lang=de|Anker=perl}}, [[Notify#Hinweise]]&lt;br /&gt;
: &amp;lt;code&amp;gt;time_str2num(OldTimestamp($NAME))&amp;lt;/code&amp;gt; - Letzter Timestamp im Log in Sekunden (egal ob FileLog oder DbLog), vgl. {{Link2CmdRef|Lang=de|Anker=perl}}, [[Notify#Hinweise]]&lt;br /&gt;
: &amp;lt;code&amp;gt;600&amp;lt;/code&amp;gt; - Schwellwert für &amp;quot;low&amp;quot; (600 sec = 10 min), nach Bedarf anpassen&lt;br /&gt;
&lt;br /&gt;
=== Alternativ per Skript ===&lt;br /&gt;
Andere Komponenten, wie z. B. [[:Kategorie:FS20 Components|FS20 Komponenten]], übermitteln keinen Batteriestatus. &lt;br /&gt;
&lt;br /&gt;
Um dort dennoch einen Test darauf zu machen, ob die Batterie evtl. leer ist, kann man z. B. prüfen, wann der letzte Status des jeweiligen Gerätes empfangen wurde, etwa mit folgender Funktion in [[99_myUtils_anlegen|99_myUtils.pm]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sub check_if_alive($$) {&lt;br /&gt;
  # Expects:&lt;br /&gt;
  # 1. Devicename to be checked&lt;br /&gt;
  # 2. Age in hours, after the expiry of which with no new state the device will be considered as dead.&lt;br /&gt;
  # Returns:&lt;br /&gt;
  # 0 -&amp;gt; Device dead&lt;br /&gt;
  # 1 -&amp;gt; Device alive&lt;br /&gt;
  # 2 -&amp;gt; Error&lt;br /&gt;
  my ($Device,$hours_threshold) = @_;&lt;br /&gt;
  my ($Device) = @_;&lt;br /&gt;
  my $now = time;&lt;br /&gt;
  my $Timestamp = ReadingsTimestamp($Device,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;);&lt;br /&gt;
  if ($Timestamp eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    return 2;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @splitdatetime = split(/ /,$Timestamp);&lt;br /&gt;
  my @splitdate = split(/-/, $splitdatetime[0]);&lt;br /&gt;
  my @splittime = split(/:/, $splitdatetime[1]);&lt;br /&gt;
  my $last_state_time =  timelocal($splittime[2], $splittime[1], $splittime[0], $splitdate[2], $splitdate[1]-1, $splitdate[0]);&lt;br /&gt;
  my $age_in_hours = ($now - $last_state_time) / 3600;&lt;br /&gt;
&lt;br /&gt;
  if ($age_in_hours &amp;gt; $hours_threshold) {&lt;br /&gt;
    Log 1, (&amp;quot;check_if_alive: $Device dead, last state was $age_in_hours hours ago&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion kann man z.B. in einem at je zu prüfendem Gerät regelmäßig (z. B. einmal am Tag um 05:55 Uhr) aufrufen, und testen, ob die letzten 12 Stunden etwas empfangen wurde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*05:55:55 { &lt;br /&gt;
  check_if_alive(&amp;quot;KS300&amp;quot;, 12);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KS300 ist dabei der Name des Devices in fhem. &lt;br /&gt;
&lt;br /&gt;
Wenn das Gerät nicht geantwortet hat, erzeugt die oben vorgeschlagene Funktion einen Logeintrag.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Dieser Batterietest schlägt natürlich auch an, wenn die FS20 Geräte noch funktionieren, aber der CUL zum Empfangen der Signale nicht mehr funktioniert. In dem Fall sind dann auf einen Schlag angeblich alle Batterien leer. Um dies zumindest teilweise abzufangen, könnte man vor dem Erzeugen des Logeintrags noch auf den state des CUL testen, dass dieser nicht &amp;quot;disconnected&amp;quot; ist.&lt;br /&gt;
&lt;br /&gt;
==== Visualisierung ====&lt;br /&gt;
Der Abschnitt Links unten enthält einen Verweis, wie man den Batteriestatus visuell anzeigen kann. Das funktioniert mit der oben vorgeschlagenen Funktion mit einigen Ergänzungen auch, wenn das Gerät selbst keinen Batteriestatus anzeigt.&lt;br /&gt;
&lt;br /&gt;
Dafür braucht man einen zusätzlichen Dummy je zu überwachendem Gerät, mit dem Namen dum_&amp;lt;zu_überwachendes_Gerät&amp;gt;_dead. Für das Gerät KS300 heißt dieser dummy also z. B. dum_KS300_dead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Internals: &lt;br /&gt;
   NAME       dum_KS300_dead &lt;br /&gt;
   NR         795 &lt;br /&gt;
   STATE      nein &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
   Readings: &lt;br /&gt;
     2015-04-28 07:47:48   state           nein &lt;br /&gt;
Attributes: &lt;br /&gt;
   devStateIcon ja:measure_battery_50@red nein:measure_battery_100@green&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser dummy soll hier die Zustände &amp;quot;ja&amp;quot; und &amp;quot;nein&amp;quot; annehmen können. Bei ja ist ihm über devStateIcon ein rotes Icon einer eher leeren Batterie zugewiesen, bei nein ein grünes Icon einer vollen Batterie. &lt;br /&gt;
&lt;br /&gt;
Nun muss noch die oben vorgeschlagene Funktion angepasst werden, um den Zustand des dummy entsprechend dem ermittelten Batteriestatus neu zu setzen. Dafür wird die Abfrage des Alters am Ende der Funktion um eine Zeile erweitert, die den Status des dummy setzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  if ($age_in_hours &amp;gt; $hours_threshold) {&lt;br /&gt;
    Log 1, (&amp;quot;check_if_alive: $Device dead, last state was $age_in_hours hours ago&amp;quot;);&lt;br /&gt;
    fhem(&amp;quot;set dum_&amp;quot;.$Device.&amp;quot;_dead ja&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    fhem(&amp;quot;set dum_&amp;quot;.$Device.&amp;quot;_dead nein&amp;quot;);&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Den Dummy mit diesem devStateIcon kann man so der unter &amp;quot;Links&amp;quot; unten vorgeschlagenen readingsGroup hinzufügen, und damit auch Geräte ohne eigenen Batteriestatus überwachen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt|visuelle Batterieüberwachung mit readingsGroup]]&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=perl}} - Perl specials&lt;br /&gt;
* [[Notify#Hinweise|Hinweise zu Variablen]] (ansonsten auch an div. Stellen in der {{Link2CmdRef}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SVG-Plots_von_FileLog_auf_DbLog_umstellen&amp;diff=26525</id>
		<title>SVG-Plots von FileLog auf DbLog umstellen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SVG-Plots_von_FileLog_auf_DbLog_umstellen&amp;diff=26525"/>
		<updated>2018-04-30T11:39:20Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* @fld */ Weitere Beispiele eingefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Grundsätzlich verhält sich [[DbLog]] bei der Verwendung in [[Creating Plots|SVG-Plots]] sehr ähnlich wie ein [[FileLog]]. So kann ein neuer Plot auf DbLog-Daten in der [[FHEMWEB|FHEM-Oberfläche]] genauso angelegt werden wie beim FileLog, indem man an der Definition des DbLog Devices auf &amp;quot;Create SVG plot from DbLog&amp;quot; klickt. Wenn man von FileLog auf DbLog umstellt, möchte man aber evtl. nur die Definitionen der SVG-Plots anpassen. Hier einige Anmerkungen dazu.&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
&lt;br /&gt;
Eine bestehende FileLog Definition für ein Thermostat könnte zB so aussehen:&lt;br /&gt;
&lt;br /&gt;
 define FileLog_W_HEIZUNG FileLog ./log/W_HEIZUNG-%Y.log W_HEIZUNG&lt;br /&gt;
 attr FileLog_W_HEIZUNG logtype text&lt;br /&gt;
 attr FileLog_W_HEIZUNG room hidden&lt;br /&gt;
 &lt;br /&gt;
 define SVG_FileLog_W_HEIZUNG_1 SVG FileLog_W_HEIZUNG:SVG_FileLog_W_HEIZUNG_1:CURRENT&lt;br /&gt;
 attr SVG_FileLog_W_HEIZUNG_1 room hidden&lt;br /&gt;
&lt;br /&gt;
Bei Umstellung auf DbLog kann das FileLog-Device natürlich gelöscht werden, nachdem es durch ein allgemeines DbLog-Device ersetzt worden ist (siehe [[DbLog]]). Die Definition des Plots wird danach folgendermassen geändert:&lt;br /&gt;
&lt;br /&gt;
 define DBLOG DbLog mydb.conf .*:.*&lt;br /&gt;
 &lt;br /&gt;
 define SVG_W_HEIZUNG_1 SVG DBLOG:SVG_DBLOG_W_HEIZUNG_1:CURRENT&lt;br /&gt;
 attr SVG_W_HEIZUNG_1 room hidden&lt;br /&gt;
&lt;br /&gt;
Mit dieser Anweisung wird ein SVG-Plot mit Namen &#039;&#039;SVG_W_HEIZUNG_1&#039;&#039; (der Name muss natürlich nicht geändert werden, soviel Zeit sollte man sich allerdings nehmen) angelegt, der seine Daten vom DbLog-Device &#039;&#039;DBLOG&#039;&#039; bezieht und mit Hilfe der Gplot-Datei &#039;&#039;SVG_DBLOG_W_HEIZUNG_1.gplot&#039;&#039; (auch dieser Name muss nicht zwingend geändert werden) rendert.&lt;br /&gt;
&lt;br /&gt;
== Gplot-Datei ==&lt;br /&gt;
&lt;br /&gt;
Die bestehende Gplot-Datei &#039;&#039;SVG_FileLog_W_HEIZUNG_1.gplot&#039;&#039; (im Verzeichnis &#039;&#039;www/gplot&#039;&#039;) wird zunächst nach &#039;&#039;SVG_DBLOG_W_HEIZUNG_1.gplot&#039;&#039; kopiert. Sie kann gelöscht werden, wenn die Umstellung zufrieden stellend abgeschlossen ist. Geändert werden müssen nur die Zeilen, die mit &#039;&#039;#FileLog&#039;&#039; beginnen:&lt;br /&gt;
&lt;br /&gt;
 #FileLog 4:W_HEIZUNG.temperature\x3a:0:&lt;br /&gt;
 #FileLog 4:W_HEIZUNG.desiredTemperature:0:&lt;br /&gt;
 #FileLog 4:W_HEIZUNG.valveposition\x3a:0:&lt;br /&gt;
&lt;br /&gt;
Daraus wird:&lt;br /&gt;
&lt;br /&gt;
 #DbLog W_HEIZUNG:temperature:0:&lt;br /&gt;
 #DbLog W_HEIZUNG:desiredTemperature:0:&lt;br /&gt;
 #DbLog W_HEIZUNG:valveposition:0:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;#FileLog&#039;&#039; wird durch &#039;&#039;#DbLog&#039;&#039; ersetzt. Die Angabe der Feldnummer vor dem Device (hier: &amp;quot;4&amp;quot;) fällt weg, ebenso evtl. notierte Sonderzeichen am Ende der Readings-Bezeichnung (hier &amp;quot;\x3a&amp;quot;). Ansonsten bleibt der Inhalt der Gplot-Datei gleich. &lt;br /&gt;
&lt;br /&gt;
===@fld===&lt;br /&gt;
Ein Sonderfall in der Notation liegt in der Verwendung von Mappings mit Hilfe des @fld-Arrays (siehe auch [[Creating Plots]]). Da es dieses Array in der Form in DbLogs nicht gibt, muss auf eine Zuweisung der Variable $val umgestellt werden. Lautet die Anweisung bei Verwendung von FileLog zB:&lt;br /&gt;
&lt;br /&gt;
 #FileLog 3:W_FENSTER:onoff::$fld[2]=~&amp;quot;1&amp;quot;?24:-10&lt;br /&gt;
&lt;br /&gt;
muss sie für DbLog folgendermassen geändert werden:&lt;br /&gt;
&lt;br /&gt;
 #DbLog W_FENSTER:onoff:::$val=($val=~&#039;1&#039;?24:-10)&lt;br /&gt;
&lt;br /&gt;
Insbesondere ist auch der zusätzliche Doppelpunkt vor der Anweisung zu beachten (Grund ist mir leider nicht bekannt, bitte ergänzen!).&lt;br /&gt;
&lt;br /&gt;
Falls on/off-Werte geloggt werden sollen, muss der Code wie folgt lauten: &lt;br /&gt;
&lt;br /&gt;
.gplot-File:&lt;br /&gt;
 #DbLog HMW02.O05_4k7:state:::$val=($val=~&amp;quot;on&amp;quot;?10:1)&lt;br /&gt;
SVG-Editor:&lt;br /&gt;
 RE_TEMP_BRT:temperature:::$val=$val/10&lt;br /&gt;
&lt;br /&gt;
Um auch noch dim-Werte abzufangen und mit dem entsprechenden Value zu loggen, bietet sich folgendes an: &lt;br /&gt;
&lt;br /&gt;
 #DbLog Stellantrieb_Buero:state:::$val=~s/(on|off)(\d*).*/$1eq&amp;quot;on&amp;quot;?1:($1eq&amp;quot;dim&amp;quot;?$2*0.01:0)/eg&lt;br /&gt;
&lt;br /&gt;
Bei Logeinträgen die aus mehreren Werten bestehen, muss der richtige Wert über eine Perl Expression extrahiert und der Variablen $val zugewiesen werden. Hierbei sind im replace Teil der Expression auch arithmetische Operationen möglich. Um z.B. aus dem Log des eState Readings eines HomeMatic Schaltaktors mit Leistungsmessung (HM-ES-PMSw1-Pl) den Strom in Ampere darzustellen, muss dieser erst extrahiert und dann von mA in A umgerechnet werden. Die Logzeile sieht Beispielsweise so aus:&lt;br /&gt;
&lt;br /&gt;
 2018-04-28_00:00:35 E: 24019.7 P: 0.82 I: 150 U: 234&lt;br /&gt;
&lt;br /&gt;
Mit filelog konnte der Wert über den Eintrag &lt;br /&gt;
&lt;br /&gt;
 #FileLog 4:UG_WK_Waschmaschine_Pwr.eState\x3a::$fld[6]/1000&lt;br /&gt;
&lt;br /&gt;
extrahiert und durch 1000 geteilt werden. Mit DbLog muss stattdessen eine Regular Expression mit arithmetischem Ausdruck im Zuweisungsteil verwendet werden:&lt;br /&gt;
&lt;br /&gt;
 #logdb UG_WK_Waschmaschine_Pwr:eState:::$val=~s/.*I:\s([-\.\d]+).*/$1\/1000/eg&lt;br /&gt;
&lt;br /&gt;
Mit ähnlichen Ausdrücken ist z.B. auch eine Umsetzung von zwei Wertebereichen auf 1/0 Werte für einen Plot, der on/off darstellen soll, möglich. Um z.B. bei Werten unter 250mA eine 0 (off) und über 250mA eine 1 (on) zurück zu liefern, kann dieser Ausdruck verwendet werden:&lt;br /&gt;
&lt;br /&gt;
 #logdb UG_WK_Waschmaschine_Pwr:eState:::$val=~s/.*I:\s([-\.\d]+).*/$1&amp;lt;250?0:1/eg&lt;br /&gt;
&lt;br /&gt;
===logProxy===&lt;br /&gt;
&lt;br /&gt;
 #logProxy FileLog:FileLog_W_HEIZUNG:4:W_HEIZUNG.valveposition\x3a:0:&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&lt;br /&gt;
 #logProxy DbLog:DBLOG:W_HEIZUNG:valveposition:0:&lt;br /&gt;
&lt;br /&gt;
Näheres dazu unter [[LogProxy]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1PBU-FM_Unterputz-Schaltaktor_1-fach&amp;diff=19149</id>
		<title>HM-LC-Sw1PBU-FM Unterputz-Schaltaktor 1-fach</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1PBU-FM_Unterputz-Schaltaktor_1-fach&amp;diff=19149"/>
		<updated>2017-01-27T11:23:57Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Erweiterungen aus https://forum.fhem.de/index.php?topic=65830.0 eingepflegt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware|Bild=platzHalter.png&lt;br /&gt;
|Bildbeschreibung=HM-LC-Sw1PBU-FM Unterputz-Schaltaktor 1-fach für Markenschalter&lt;br /&gt;
|HWProtocol=HomeMatic &lt;br /&gt;
|HWType=Aktor / Sender&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V&lt;br /&gt;
|HWPowerConsumption=0,5W (Standby)&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=71x71x37 mm &lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=eQ-3}}&lt;br /&gt;
&lt;br /&gt;
[[HM-LC-Sw1PBU-FM Unterputz-Schaltaktor 1-fach]] ist ein einkanaliger Funk-Schaltaktor &amp;quot;für Markenschalter&amp;quot;, der mittels entsprechender Installationsadapter mit Tasterwippen diverser renommierter Hersteller versehen werden kann und sich dadurch nahtlos in bestehende Elektroinstallationen einfügt.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Das besondere an diesem Schalter ist, dass er den vorhandenen Unterputzeinsatz vollständig ersetzt. Dabei kann die Wippe des vorhandenen Schalters - je nach Hersteller - mit einer entsprechenden Adapterplatte weiterverwendet werden.&lt;br /&gt;
&lt;br /&gt;
Es handelt sich hierbei nur um einen Aktor. Es ist nicht möglich die Taster mit anderen Homematic Geräten zu peeren. Man kann nur andere Taster mit dem Aktor peeren und diesen fernsteuern.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
{|  &lt;br /&gt;
| Art&lt;br /&gt;
| Unterputz&lt;br /&gt;
|- &lt;br /&gt;
| Typ&lt;br /&gt;
| 1fach&lt;br /&gt;
|- &lt;br /&gt;
| Stand-by-Verbrauch&lt;br /&gt;
| 0,5 W (lt. Bedienungsanleitung, S. 31, Stand 02/2012, 1 W)&lt;br /&gt;
|- &lt;br /&gt;
| Versorgungsspannung&lt;br /&gt;
| 230 V&lt;br /&gt;
|- &lt;br /&gt;
| Abmessungen (B x H x T)&lt;br /&gt;
| 71 x 71 x 37 mm&lt;br /&gt;
|- &lt;br /&gt;
| Farbe&lt;br /&gt;
| Grau&lt;br /&gt;
|- &lt;br /&gt;
| Max. Schaltleistung&lt;br /&gt;
| 1000 W&lt;br /&gt;
|- &lt;br /&gt;
| Relaistyp&lt;br /&gt;
| Wechsler&lt;br /&gt;
|- &lt;br /&gt;
| Funkfrequenz&lt;br /&gt;
| 868,3 MHz&lt;br /&gt;
|- &lt;br /&gt;
| Empfängerklasse&lt;br /&gt;
| SRD Class 2&lt;br /&gt;
|- &lt;br /&gt;
| Sicherung (intern)&lt;br /&gt;
| Rundsicherung 5 A, träge&lt;br /&gt;
|- &lt;br /&gt;
| Max. Sendeleistung&lt;br /&gt;
| 10 mW&lt;br /&gt;
|- &lt;br /&gt;
| IP-Schutzgrad&lt;br /&gt;
| IP 20&lt;br /&gt;
|- &lt;br /&gt;
| Umgebungstemperaturbereich&lt;br /&gt;
| 5–35 °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
Der vorhandene Schalter muss ersetzt werden. Dabei sind ein paar Dinge zu beachten:&lt;br /&gt;
&lt;br /&gt;
* Der (neue) Schalter benötigt neben dem L-Leiter auch einen N-Leiter für die Stromversorgung.&lt;br /&gt;
* Die Befestigung ist nicht wie bei dem System z.B. von Merten durch spreizen von Klammern möglich. Der Schalter muss in die Löcher in der Dose geschraubt werden (Schrauben im Lieferumfang enthalten).&lt;br /&gt;
* Die &amp;quot;Frontplatte&amp;quot; bzw. der Befestigungsrahmen ist etwas dicker, als der Rahmen eines normalen Schalters. Dadurch kann es sein, dass der vorhandene Rahmen des Schalters nicht mehr ganz an der Wand anliegt.&lt;br /&gt;
* Um die bereits vorhandene Schalter-Wippe weiter nutzen zu können, muss ein passender Adapter verwendet werden.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Info zum Bausatz&#039;&#039;&#039;&lt;br /&gt;
Das Gerät ist als Bausatz verfügbar, es sind die folgenden bedrahteten Bauteile einzulöten:&lt;br /&gt;
* 6 Kondensatoren&lt;br /&gt;
* 3 Stiftleisten/Fassungen (insgesamt 16 Pole)&lt;br /&gt;
* 1 Spannungsregler, 1 Diode&lt;br /&gt;
* 1 Relais (8 Pole)&lt;br /&gt;
* 1 Induktivität&lt;br /&gt;
* 1 Widerstand, 1 Varistor&lt;br /&gt;
Die zu lötenden Bauteile sind relativ unproblematisch, die Lötstellen befinden sich jedoch in drei Fällen sehr nah an bzw. zwischen vorbestückten SMD-Bauteilen.}}&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Ein exemplarischer Auszug aus der [[Konfiguration]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LichtWohnzimmer CUL_HM 197764&lt;br /&gt;
attr LichtWohnzimmer devInfo 010100&lt;br /&gt;
attr LichtWohnzimmer firmware 2.1&lt;br /&gt;
attr LichtWohnzimmer hmClass receiver&lt;br /&gt;
attr LichtWohnzimmer model unknown&lt;br /&gt;
attr LichtWohnzimmer room Wohnzimmer&lt;br /&gt;
attr LichtWohnzimmer serialNr JEQ0xxxxxx&lt;br /&gt;
attr LichtWohnzimmer subType switch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzliche Funktionen wie ein direkter Zugriff auf die integrierten Taster (self01 und self02) des Schalters können durch Programmieren der [[HomeMatic_Register_programmieren | HomeMatic Register]] realisiert werden.&lt;br /&gt;
&lt;br /&gt;
Dabei entspricht self01 dem Ausschalter des Wippschalters und self02 dem Einschalter des Wippschalters. Settings, die man also für den self01 Schalter einstellt, werden beim Ausschalten des Lichts (im Standard) angewandt und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Sw1PBU-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012-06-05_00:09:22 LichtWohnzimmer deviceMsg: off&lt;br /&gt;
2012-06-05_00:09:22 LichtWohnzimmer off&lt;br /&gt;
2012-06-05_07:40:51 LichtWohnzimmer on&lt;br /&gt;
2012-06-05_07:40:51 LichtWohnzimmer deviceMsg: on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Einrichten des Schalters kommt folgender Auszug (Stand: 06.2012)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.06.04 23:12:27 2: CUL_HM pair: CUL_HM_switch_197764 is a switch, model unknown serialNr JEQ0xxxxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Funktion als Treppenlichtschalter ===&lt;br /&gt;
Um dafür zu sorgen, dass z.B. ein durch den HM-LC-Sw1PBU-FM eingeschaltetes Licht automatisch von FHEM nach 10 Minuten ausgeschaltet wird, kann folgende Definition verwendet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Beleuchtung_an notify Beleuchtung:on* define Beleuchtung_aus at +00:10:00 set Beleuchtung off &amp;lt;/code&amp;gt;&lt;br /&gt;
Das Licht kann auch direkt über den Schalter nach 10 Minuten ausgeschaltet werden. Dies hat den Vorteil, dass die Funktion auch ohne FHEM funktioniert und keinen Funkverkehr verursacht. Wert ist in Sekunden also 60*10 für 10 Minuten. Es gibt zwei Schaltoperationen long press (lg) und short press (sh), short press ist ein kurzes antippen, long press ist den Schalter für ca. 1 Sekunde oder mehr gedrückt halten.&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shOnTime 600 self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet lgOnTime 600 self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shOnTime 600 self02&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet lgOnTime 600 self02&lt;br /&gt;
&lt;br /&gt;
=== Workaround um den Taster in FHEM zu nutzen ===&lt;br /&gt;
Man kann den Taster in der Originalfirmware nicht mit anderen Geräten peeren. Allerdings kann man mit folgendem Workaround den Taster in FHEM nutzen. Das hat jedoch eine Verzögerung zwischen drei und acht Sekunden zur Folge. Dabei ist es trotzdem möglich, den Aktor per FHEM oder gepeertem Gerät weiter zu steuern. Der Taster beeinflusst den Aktor nicht mehr. Das ganze funktioniert, weil der HM-LC-Sw1PBU-FM bei jedem Tastendruck das reading für state aktualisiert, auch wenn sich der Wert nicht ändert.&lt;br /&gt;
&lt;br /&gt;
Zuerst setzt man ein event auf event-on-change-reading:&lt;br /&gt;
&lt;br /&gt;
 attr HM-LC-Sw1PBU-FM event-on-change-reading state&lt;br /&gt;
 attr HM-LC-Sw1PBU-FM event-on-update-reading state&lt;br /&gt;
&lt;br /&gt;
Weiterhin wird der Schalter deaktiviert (hier nur für kurzen Tastendruck; mit lgSwJtXXX wird dieser Effekt auch für den langen Tastendruck erzielt):&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet intKeyVisib visib&lt;br /&gt;
 set HM-LC-Sw1PBU-FM getConfig&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet prep shSwJtOff off self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet prep shSwJtOn on self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet prep shSwJtOff off self02&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet exec shSwJtOn on self02&lt;br /&gt;
&lt;br /&gt;
Nun setzt man einen Notify auf das Reading:&lt;br /&gt;
:&amp;lt;code&amp;gt;define HM-LC-Sw1PBU-FM-TasterPressed notify HM-LC-Sw1PBU-FM {set YourOtherDevice toggle}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alternative Firmware ===&lt;br /&gt;
Um die beiden Taster als Remote und den Aktor getrennt zu nutzen gibt es alternative Firmware, deren Funktion und Benutzung auf der Seite [[HM-LC-Sw1PBU-FM Alternative Firmware]] im Detail beschrieben ist.&lt;br /&gt;
&lt;br /&gt;
=== Schalter immer toggeln lassen ===&lt;br /&gt;
Im Werkszustand schaltet die Wippe bei Druck auf der einen Seite ein, auf der anderen Seite aus. Möchte man, dass bei jedem Tastendruck einfach der Zustand geändert wird, kann man das wie folgt erreichen (unten nur für den kurzen Tastendruck dargestellt):&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet intKeyVisib visib&lt;br /&gt;
 set HM-LC-Sw1PBU-FM getConfig&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shActionType  jmpToTarget self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtOn      dlyOff      self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtOff     dlyOn       self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtDlyOn   on          self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtDlyOff  off         self01&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shActionType  jmpToTarget self02&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtOn      dlyOff      self02&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtOff     dlyOn       self02&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtDlyOn   on          self02&lt;br /&gt;
 set HM-LC-Sw1PBU-FM regSet shSwJtDlyOff  off         self02&lt;br /&gt;
&lt;br /&gt;
Um den Werkszustand bezüglich Schaltwippe wiederherzustellen (eine Seite schaltet aus, die andere wieder ein) entsprechen folgende Einstellungen dem Werkszustand:&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtOn      dlyOff     self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtOff     off        self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtDlyOn   off        self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtDlyOff  off        self01&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtOn      on         self02&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtOff     dlyOn      self02&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtDlyOn   on         self02&lt;br /&gt;
 set &amp;lt;device&amp;gt; regSet shSwJtDlyOff  on         self02&lt;br /&gt;
&lt;br /&gt;
=== on-for-timer Ersatz ===&lt;br /&gt;
Der HM-LC-Sw1PBU-FM kennt kein &amp;lt;code&amp;gt;set on-for-timer&amp;lt;/code&amp;gt;. Um den HM-LC-Sw1PBU-FM trotzdem für einige Zeit anschalten zu können (z. B. wenn ein Fensteröffner dranhängt und das Fenster nur für eine gewisse Zeit geöffnet werden soll), muss ein Button der vccu mit dem HM-LC-Sw1PBU-FM gepeered werden:&lt;br /&gt;
 set vccu_Btn4 peerChan 0 HM-LC-Sw1PBU-FM dual set&lt;br /&gt;
&lt;br /&gt;
Danach wären (in diesem Fall mit vccu_Btn4) die virtuellen Buttons 4 und 5 mit dem HM-LC-Sw1PBU-FM gepeered. Das Fenster könnte dann über &amp;lt;code&amp;gt;set vccu_Btn4 press short&amp;lt;/code&amp;gt; für die vorher über &amp;lt;code&amp;gt;set HM-LC-Sw1PBU-FM regSet shOnTime [Dauer] vccu_Btn4&amp;lt;/code&amp;gt; die Öffnungszeit eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Anleitung (PDF {{DocLink|elv|/Assets/Produkte/10/1030/103029/Downloads/103029_FunkSchaltaktor_um.pdf}})&lt;br /&gt;
* Produktwebseite bei [http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=10&amp;amp;detail2=37991 ELV]&lt;br /&gt;
* [[HM-LC-Sw1PBU-FM Alternative_Firmware|Alternative Firmware]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Verkehrslage&amp;diff=15896</id>
		<title>Verkehrslage</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Verkehrslage&amp;diff=15896"/>
		<updated>2016-07-25T13:42:00Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Fehlerbehebung nach Meldung im Forum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier wird ein Device erstellt um sich die [[Verkehrslage]] einer bestimmten Strecke anzeigen zu lassen. Das ganze beruht auf dem Modul [[HTTPMOD]]. &lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
Ziel ist es, dass ein Dummy die aktuelle Verkehrslage für einen bestimmten Weg anzeigt und sich regelmäßig aktualisiert.  &lt;br /&gt;
&lt;br /&gt;
== Vorraussetzungen ==&lt;br /&gt;
Benötigt wird das Modul [[HTTPMOD]], welches standardmäßig installiert ist. Weiterhin wird ein Google Account benötigt und ein API Key um auf die Daten der Google Verkehrslage zuzugreifen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API Key von Google beziehen ==&lt;br /&gt;
Der Google API Key ist ein Schlüssel, welcher uns berechtigt Daten von Google zu erhalten. Google hat verschiedene Programme, welche über eine API Schnittstelle zur Verfügung gestellt werden. Damit nicht jeder einfach auf diese Daten zugreifen kann, wird der Key benötigt. Um diesen zu bekommen müsst ihr als aller erstes einen Google Account erstellen auf www.google.de &lt;br /&gt;
&lt;br /&gt;
Sobald ihr dies habt, müssen wir in die Developer Console. Grund ist, dass der Zugriff auf die Daten eigentlich für Entwickler ist. Dorthin gelang ihr über diesen [https://console.developers.google.com/start?hl=de Link]. &lt;br /&gt;
&lt;br /&gt;
Als nächstes müsst ihr oben Links auf &amp;quot;Google APIs verwenden&amp;quot; klicken und ein neues Projekt erstellen, wenn ihr noch keins habt.&lt;br /&gt;
&lt;br /&gt;
Jetzt in der Übersicht beim Reiter &amp;quot;Google APIs&amp;quot; unter Google Maps API &amp;quot;Google Maps Distance Matrix API&amp;quot; auswählen und dort auf den blauen Button &amp;quot;Enable&amp;quot; klicken.  &lt;br /&gt;
&lt;br /&gt;
Unter dem Reiter &amp;quot;Nutzung&amp;quot; könnt ihr später die Häufigkeit eurer Zugriffe anzeigen lassen. Unter dem Reiter &amp;quot;Kontingente&amp;quot; seht ihr, wie viele Zugriffe ihr an diesem Tag noch tätigen könnt. Insgesamt sind 2500 Zugriffe pro Tag erlaubt. Das sind etwa 1,7 Zugriffe pro Minute. So viele sollte man eigentlich nicht brauchen. &lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite unter &amp;quot;Zugangsdaten&amp;quot; kann man sich nun auch seinen Key anzeigen lassen. Diesen werden wir später für die Zugriffe benötigen. &lt;br /&gt;
&lt;br /&gt;
== Link für das Modul erstellen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://maps.googleapis.com/maps/api/distancematrix/json?origins=ORT,STRASSE+NR&amp;amp;destinations=ORT,STRASSE+NR&amp;amp;mode=driving&amp;amp;language=de-DE&amp;amp;departure_time=now&amp;amp;key=APIKEY&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Den Link müssen wir mit unseren eigenen Angaben ergänzen. Starten wir zB in Frankfurt an der Friedberger Straße 291 und wollen nach Gießen in die Straße Schiffenberger Weg 115 sieht unser Link wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://maps.googleapis.com/maps/api/distancematrix/json?origins=Frankfurt,Friedberger%20Stra%C3%9Fe%20291&amp;amp;destinations=Gie%C3%9Fen,%20Schiffenberger%20Weg%20115&amp;amp;mode=driving&amp;amp;language=de-DE&amp;amp;departure_time=now&amp;amp;key=APIKEY&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich den Link einmal in die Browserzeile einzugeben. Dann muss auch nicht auf Leerzeichen geachtet werden und Google formatiert ihn uns automatisch, wie wir ihn brauchen. Übrigens seht ihr dann auch, wie die Seite aussieht, auf welche wir später mit dem HTTPMOD Modul zugreifen werden. &lt;br /&gt;
&lt;br /&gt;
== HTTPMOD Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
=== Definieren des Device ===&lt;br /&gt;
Wenn wir nun unseren Google API Key und den Link haben, müssen wir ein neues Device mittels des [[HTTPMOD]] Moduls anlegen. In unserem Beispiel werden wir es wie folgt nennen: Verkehr.FFM.GI Verkehr für die Übersicht, FFM, weil wir ins Frankfurt am Main starten werden und GI, weil wir in Gießen enden. &lt;br /&gt;
&lt;br /&gt;
Wir geben also folgendes in unsere Kommandozeile ein: &lt;br /&gt;
&amp;lt;pre&amp;gt;define Verkehr.FFM.GI HTTPMOD Link 3600&amp;lt;/pre&amp;gt; &lt;br /&gt;
in unserem Beispiel also:&lt;br /&gt;
&amp;lt;pre&amp;gt;define Verkehr.FFM.GI HTTPMOD https://maps.googleapis.com/maps/api/distancematrix/json?origins=Frankfurt,Friedberger%20Stra%C3%9Fe%20291&amp;amp;destinations=Gie%C3%9Fen,%20Schiffenberger%20Weg%20115&amp;amp;mode=driving&amp;amp;language=de-DE&amp;amp;departure_time=now&amp;amp;key=APIKEY 3600&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zahl am Ende bestimmt die Häufigkeit der Abfrage in Sekunden. In unserem Fall also einmal die Stunde.&lt;br /&gt;
&lt;br /&gt;
=== Anlegen der Attribute ===&lt;br /&gt;
Die benötigten Daten werden nun über die Attribut readingXXName und readingXXRegex abgefragt. &lt;br /&gt;
&lt;br /&gt;
readingXXName: Hiermit geben wir dem späteren Reading einen Namen. &lt;br /&gt;
&lt;br /&gt;
readingXXRegex: Hier wird festgelegt, welcher Teil des Textes &amp;quot;herausgeschnitten&amp;quot; werden soll.&lt;br /&gt;
&lt;br /&gt;
XX: Wird durch Zahlen ersetzt, damit man eine Übersicht hat. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als aller Erstes müssen wir uns unsere eigenen Attribute vorbereiten. Dies machen wir mit dem attr userattr wie folgt:&lt;br /&gt;
&lt;br /&gt;
==== UserReadings Attribut ====&lt;br /&gt;
Hier definieren wir die später benötigte Attribute:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr zu den Attributen unter [[HTTPMOD]].&lt;br /&gt;
&lt;br /&gt;
Legen wir nun unsere weiteren Attribut an:&lt;br /&gt;
&lt;br /&gt;
==== Dauer der Reise ====&lt;br /&gt;
Die Dauer der Reise greifen wir mit den Attributen: &lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI reading01Name duration &lt;br /&gt;
attr Verkehr.FFM.GI reading01Regex &amp;quot;duration&amp;quot;\s*:\s*{\s*[&amp;quot;\w\s:,]+&amp;quot;value&amp;quot;\s*:\s*(\d+)\s*} &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unser Reading wird später &amp;quot;duration&amp;quot; heißen. Darin wird die Dauer der Reise in Sekunden angegeben.&lt;br /&gt;
&lt;br /&gt;
==== Dauer der Reise mit aktuellem Verkehr ====&lt;br /&gt;
Die Dauer der Reise mit Verkehr greifen wir mit den Attributen: &lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI reading02Name duration_in_traffic &lt;br /&gt;
attr Verkehr.FFM.GI reading02Regex &amp;quot;duration_in_traffic&amp;quot;\s*:\s*{\s*[&amp;quot;\w\s:,]+&amp;quot;value&amp;quot;\s*:\s*(\d+)\s*}  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unser Reading wird später &amp;quot;duration&amp;quot; heißen. Darin wird die Dauer der Reise in Sekunden angegeben.&lt;br /&gt;
&lt;br /&gt;
==== Entfernung ====&lt;br /&gt;
Die Entfernung greifen wir mit den Attributen:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI reading03Name distance &lt;br /&gt;
attr Verkehr.FFM.GI reading03Regex &amp;quot;distance&amp;quot;\s*:\s*{\s*[&amp;quot;\w\s:,]+&amp;quot;value&amp;quot;\s*:\s*(\d+)\s*}   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unser Reading wird später &amp;quot;distance&amp;quot; heißen und uns die Entfernung angeben.&lt;br /&gt;
&lt;br /&gt;
==== Zielort ====&lt;br /&gt;
Den Zielort greifen wir mit den Attributen:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI reading04Name destination_addresses  &lt;br /&gt;
attr Verkehr.FFM.GI reading04Regex &amp;quot;destination_addresses&amp;quot;\s*:\s*\[\s*&amp;quot;([\w\s.,-:üöäß(\)]+)&amp;quot;\s*\]   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unser Reading wird später &amp;quot;destination_addresses&amp;quot; heißen und uns den Zielort angeben.&lt;br /&gt;
&lt;br /&gt;
==== Startort ====&lt;br /&gt;
Den Startort greifen wir mit den Attributen:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI reading05Name origin_addresses  &lt;br /&gt;
attr Verkehr.FFM.GI reading05Regex &amp;quot;origin_addresses&amp;quot;\s*:\s*\[\s*&amp;quot;([\w\s.,-:üöäß(\)]+)&amp;quot;\s*\]   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unser Reading wird später &amp;quot;origin_addresses&amp;quot; heißen und uns den Zielort angeben.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Werte für die spätere Anzeige ====&lt;br /&gt;
Damit die Werte später User freundlich angezeigt werden, lassen wir sie von FHEM berechnen:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI userReadings duration_hr {strftime &amp;quot;%H:%M&amp;quot;, gmtime( int( ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration&amp;quot;,0) /60+0.5)*60 );}, duration_in_traffic_hr {strftime &amp;quot;%H:%M&amp;quot;, gmtime( int( ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration_in_traffic&amp;quot;,0) /60+0.5)*60 );}, distance_hr {int( ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;distance&amp;quot;,0) /1000+0.5);}, duration_diff {int((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration_in_traffic&amp;quot;,0)-ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration&amp;quot;,0))/60+0.5);}, duration_diff_hr {my $diff=int((ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration_in_traffic&amp;quot;,0)-ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;duration&amp;quot;,0))/60+0.5); return &amp;quot;+&amp;quot;.$diff if ($diff&amp;gt;0); return &amp;quot;+0&amp;quot;;} &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== State Anzeige ====&lt;br /&gt;
Uns als letztes noch, wie wir das ganze in State angezeigt bekommen möchten:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Verkehr.FFM.GI stateFormat duration_hr duration_diff_hr Min. (distance_hr km) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fertig ==&lt;br /&gt;
Fertig ist das Device, welches uns nun unseren Weg anzeigt. Natürlich könnt ihr die einzelnen Berechnungen und auch die State Anzeige für euch selbst anpassen und entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
== Anmerkung ==&lt;br /&gt;
Zwei Dinge möchte ich anmerken:&lt;br /&gt;
&lt;br /&gt;
1. Das ganze beruht auf {{Link2Forum|Topic=20151|Message=363109|LinkText=diesem}} und {{Link2Forum|Topic=20151|Message=365322|LinkText=diesem}} Beitrag. &lt;br /&gt;
&lt;br /&gt;
2. Sobald Google die Ausgabe der Website verändert, wird es vermutlich nicht mehr funktionieren. Wie ihr dem Thema im Forum entnehmen könnt, ist dies schon vorgekommen. Daher nicht wundern, sondern im Forum schauen, ob es schon eine Veränderung gibt oder selbst die Readings anpassen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code_Snippets]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sec-WDS_Funk-Wassermelder&amp;diff=15539</id>
		<title>HM-Sec-WDS Funk-Wassermelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sec-WDS_Funk-Wassermelder&amp;diff=15539"/>
		<updated>2016-06-09T13:30:20Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Link zur Bedienungsanleitung korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:HM-Sec-WDS-Funk-Wassermelder1.png|thumb|right|HM-Sec-WDS Funk-Wassermelder]]&lt;br /&gt;
&lt;br /&gt;
Wassermelder, der feuchte und nasse Untergründe detektieren kann.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
[[Datei:HM-Sec-WDS-Funk-Wassermelder2.png|thumb|right|Kontakte des Wassermelders]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Wassermelder wird an einer HomeMatic Anlage betrieben, z.B. an einem [[HMLAN Konfigurator]].&lt;br /&gt;
&lt;br /&gt;
Gemeldet werden drei verschiedene Stati: &amp;quot;dry&amp;quot;, &amp;quot;damp&amp;quot; und &amp;quot;wet&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Den Status &amp;quot;damp&amp;quot; (feucht) nimmt das System an, wenn zwei der äußeren Kontakte (rot) über eine Wasserfläche Kontakt haben.&lt;br /&gt;
Der Status &amp;quot;Wet&amp;quot; (nass) wird angenommen, wenn einer der äußeren Kontakte über eine Wasserfläche mit dem inneren, ca. 1,5 mm &lt;br /&gt;
höher liegenden Kontakt (blau) hat. Unbedingt Seite 5 der Anleitung beachten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ca. alle 24 Stunden sendet das System eine &amp;quot;battery&amp;quot; Meldung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
=== Auszug aus der fhem.cfg ===&lt;br /&gt;
Beispielhafter Auszug aus der [[Konfiguration]], die durch [[autocreate]] angelegt wurde:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL_HM_HM_SEC_WDS_xxxxxx CUL_HM xxxxxx&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx .devInfo yyyyyy&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx .stc 80&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx actCycle 028:00&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx actStatus alive&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx alias WassermelderHeizung&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx expert 2_full&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx firmware 1.1&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx model HM-SEC-WDS&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx peerIDs &lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx room 8-Wasseralarm&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx serialNr xyz&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx subType threeStateSensor&lt;br /&gt;
#Melde alle Kontaktstatusänderungen&lt;br /&gt;
define Wasseralarm_Contact notify CUL_HM_HM_SEC_WDS_xxxxxx:contact.* { sendmail(&#039;local@@mail.tld&#039;,&#039;%-@&#039;,&#039;%-@&#039;) }&lt;br /&gt;
attr Wasseralarm_Contact room 8-Wasseralarm&lt;br /&gt;
#Melde Batteriewarnung&lt;br /&gt;
define Wasseralarm_Battery notify CUL_HM_HM_SEC_WDS_xxxxxx:battery.* { sendmail(&#039;local@@mail.tld&#039;,&#039;%-@&#039;,&#039;%-@&#039;) }&lt;br /&gt;
attr Wasseralarm_Battery room 8-Wasseralarm&lt;br /&gt;
#Melde nur &amp;amp;quot;wet&amp;amp;quot; Meldung&lt;br /&gt;
define Wasseralarm_Contact_Wet notify CUL_HM_HM_SEC_WDS_xxxxxx:contact:.wet.* { sendmail(&#039;local@@mail.tld&#039;,&#039;WET-ONLY-ALARM-%-@&#039;,&#039;%-@&#039;) }&lt;br /&gt;
attr Wasseralarm_Contact_Wet room 8-Wasseralarm&lt;br /&gt;
define CUL_HM_HM_SEC_WDS_xxxxxx FileLog /usr/local/FHEM/var/log/CUL_HM_HM_SEC_WDS_xxxxxx-%Y-%m.log CUL_HM_HM_SEC_WDS_xxxxxx&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx logtype wateralert:Plot,text&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx room 8-Wasseralarm&lt;br /&gt;
define CUL_HM_HM_SEC_WDS_xxxxxx weblink fileplot FileLog_CUL_HM_HM_SEC_WDS_xxxxxx:wateralert:CURRENT&lt;br /&gt;
attr CUL_HM_HM_SEC_WDS_xxxxxx room 8-Wasseralarm,97-Graphen&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plots / Grafiken ===&lt;br /&gt;
Beispiel für einen [[Plots_erzeugen|Plot]]:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set title &#039;&amp;amp;lt;TL&amp;amp;gt;&#039;&lt;br /&gt;
set ytics (&amp;amp;quot;dry&amp;amp;quot; 0, &amp;amp;quot;damp&amp;amp;quot; 1, &amp;amp;quot;wet&amp;amp;quot; 2)&lt;br /&gt;
set y2tics (&amp;amp;quot;dry&amp;amp;quot; 0, &amp;amp;quot;damp&amp;amp;quot; 1, &amp;amp;quot;wet&amp;amp;quot; 2)&lt;br /&gt;
set yrange [-0.1:2.1]&lt;br /&gt;
set y2range [-0.1:2.1]&lt;br /&gt;
set ylabel &amp;amp;quot;Status&amp;amp;quot;&lt;br /&gt;
set y2label &amp;amp;quot;Status&amp;amp;quot;&lt;br /&gt;
#FileLog 3::0:$fld[2]=~&amp;amp;quot;damp&amp;amp;quot;?1:$fld[2]=~&amp;amp;quot;wet&amp;amp;quot;?2:0&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;{print $1, $3~/damp/? 1&amp;amp;#160;: $3~/wet/? 2&amp;amp;#160;: 0; }&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot;\&lt;br /&gt;
    using 1:2 notitle with steps&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013-03-07_21:47:28 CUL_HM_HM_SEC_WDS_xxxxxx Activity:: alive&lt;br /&gt;
2013-03-08_09:56:20 CUL_HM_HM_SEC_WDS_xxxxxx alive: yes&lt;br /&gt;
2013-03-08_09:56:20 CUL_HM_HM_SEC_WDS_xxxxxx battery: ok&lt;br /&gt;
2013-03-08_09:56:20 CUL_HM_HM_SEC_WDS_xxxxxx dry&lt;br /&gt;
2013-03-08_09:56:20 CUL_HM_HM_SEC_WDS_xxxxxx contact: dry (to HMLAN)&lt;br /&gt;
2013-03-08_17:42:29 CUL_HM_HM_SEC_WDS_xxxxxx wet&lt;br /&gt;
2013-03-08_17:42:29 CUL_HM_HM_SEC_WDS_xxxxxx contact: wet (to HMLAN)&lt;br /&gt;
2013-03-08_17:42:53 CUL_HM_HM_SEC_WDS_xxxxxx dry&lt;br /&gt;
2013-03-08_17:42:53 CUL_HM_HM_SEC_WDS_xxxxxx contact: dry (to HMLAN)&lt;br /&gt;
2013-03-08_17:43:10 CUL_HM_HM_SEC_WDS_xxxxxx damp&lt;br /&gt;
2013-03-08_17:43:10 CUL_HM_HM_SEC_WDS_xxxxxx contact: damp (to HMLAN)&lt;br /&gt;
2013-03-08_17:43:16 CUL_HM_HM_SEC_WDS_xxxxxx dry&lt;br /&gt;
2013-03-08_17:43:16 CUL_HM_HM_SEC_WDS_xxxxxx contact: dry (to HMLAN)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automatische E-Mail bei Feuchte/Nässe ===&lt;br /&gt;
Mittels folgendem Eintrag in der &#039;&#039;fhem.cfg&#039;&#039; wird bei jedem Statuswechsel des HM-Sec-WDS auf &#039;&#039;damp&#039;&#039; bzw. &#039;&#039;wet&#039;&#039; von FHEM eine E-Mail an eine bestimmte E-Mail-Adresse gesendet und ein entsprechender Eintrag in der &#039;&#039;fhem.log&#039;&#039; erzeugt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_wasser_chk notify CUL_HM_HM_SEC_WDS_xxxxxx:contact.* { \&lt;br /&gt;
 if(&amp;quot;$EVENT&amp;quot; !~ m/dry/) {\&lt;br /&gt;
  {fhemMail(&#039;Max.Mustermann@Mustermann.de&#039;,&#039;FHEM Wasseralarm&#039;,&amp;quot;$NAME $EVENT&amp;quot;)};;\&lt;br /&gt;
  Log 3, &amp;quot;$NAME: Wassermeldung $EVENT&amp;quot;;;\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Beispiel setzt eine [[99 myUtils anlegen|99_myUtils.pm]] mit einer funktionierenden, selbst erstellten Unterroutine fhemMail() für den [[E-Mail_senden|Mailversand]] voraus. &lt;br /&gt;
&lt;br /&gt;
Die Mail, die erzeugt wird, hat den Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;An:    Max.Mustermann@Mustermann.de &lt;br /&gt;
Betreff:  FHEM Wasseralarm&lt;br /&gt;
Mail-Text: CUL_HM_HM_SEC_WDS_xxxxxx contact: wet (to HMLAN1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Man kann zwar nur auf &#039;&#039;:contact.*&#039;&#039; filtern, aber dann kommt z.B. auch bei Statusänderungen von vorhandenen HM-Sec-SC eine Mail. Bei mehreren HM-Sec-WDS muss der Filter entsprechend angepasst werden, um mit einem [[notify]] auszukommen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung [http://files.elv.de/service/manuals/Homematic/83459_HM_Sec_WDS_D_v1_0_UM.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Wassermelder]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi:_GPIOs_schalten&amp;diff=14422</id>
		<title>Raspberry Pi: GPIOs schalten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi:_GPIOs_schalten&amp;diff=14422"/>
		<updated>2016-03-01T20:10:56Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Dummy-Schalter */ Umstellung auf $EVENT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit FHEM lassen sich auch die &#039;&#039;&#039;GPIOs&#039;&#039;&#039; des [[Raspberry Pi]] steuern. Generell gibt es einige Möglichkeiten, eine entsprechende Steuerung zu verwirklichen. Als Informationsquelle empfiehlt sich hier die [http://elinux.org/RPi_Low-level_peripherals Low-Level Peripherals Seite des Embedded Linux Wiki]&lt;br /&gt;
&lt;br /&gt;
== Bash Script ==&lt;br /&gt;
Zum schalten der GPIOs via Bash kann folgendes Script (fhem-gpio.sh) verwendet werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
PORT=$1;&lt;br /&gt;
if&amp;amp;#160;! [ -d /sys/class/gpio/gpio$PORT ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;$PORT&amp;quot; &amp;amp;gt; /sys/class/gpio/export&lt;br /&gt;
  echo &amp;quot;out&amp;quot; &amp;amp;gt; /sys/class/gpio/gpio$PORT/direction&lt;br /&gt;
fi&lt;br /&gt;
STATE=$2;&lt;br /&gt;
if [ $STATE -ge 1 ]&lt;br /&gt;
then&lt;br /&gt;
  STATE=1&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$STATE&amp;quot; &amp;amp;gt; /sys/class/gpio/gpio$PORT/value&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Aufruf des Scripts erfolgt dann mit Angabe der Pinnummer sowie des Zustands des Pins, z.&amp;amp;nbsp;B.:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem-gpio.sh 17 1 # Pin 17 in High-Zustand versetzen&lt;br /&gt;
fhem-gpio.sh 17 0 # Pin 17 in Low-Zustand versetzen&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wichtig: Das Script muss leider unter root (z.B. per sudo) aufgerufen werden.&lt;br /&gt;
Der Einfachheithalber kann das Script unter /usr/sbin kopiert werden.&lt;br /&gt;
&lt;br /&gt;
== Perl-Modul ==&lt;br /&gt;
Das Modul &#039;&#039;&#039;RPI_GPIO&#039;&#039;&#039; für den Zugriff auf die GPIO Pins des Raspberry wird bereits mit FHEM mitgeliefert.&lt;br /&gt;
Es setzt die [http://wiringpi.com/download-and-install/ WiringPi] Bibliothek voraus.&lt;br /&gt;
Installationsschritte sind in der Commandref zu finden. [http://forum.fhem.de/index.php/topic,16519.0.html Diskussions Thread im Forum]&lt;br /&gt;
&lt;br /&gt;
In Arbeit: Perl-Modul basierend auf [http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm BCM2835-Modul]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Benutzer „fhem“ muss der Gruppe „gpio“ hinzugefügt werden, damit FHEM später auch Zugriff auf die GPIO Ports hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo adduser fhem gpio&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dummy-Schalter ==&lt;br /&gt;
Über einen Dummy-Schalter kann das Bash-Script dann getriggert werden. &lt;br /&gt;
&lt;br /&gt;
Im Fall von [[FS20 Allgemein|FS20]] sähe eine entsprechende Schalter-Definition beispielsweise so aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define gpio_17 FS20 [Hauscode] [Devicecode]&lt;br /&gt;
attr gpio_17 dummy 1&lt;br /&gt;
define act_on_gpio_17 notify gpio_17 {\&lt;br /&gt;
 if (&amp;quot;$EVENT&amp;quot; ne &amp;quot;off&amp;quot;) {\&lt;br /&gt;
  system(&amp;quot;sudo fhem-gpio.sh 17 1 &amp;amp;&amp;quot;)\&lt;br /&gt;
 } else {\&lt;br /&gt;
  system(&amp;quot;sudo fhem-gpio.sh 17 0 &amp;amp;&amp;quot;)\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* [http://elinux.org/RPi_Low-level_peripherals http://elinux.org/RPi_Low-level_peripherals]&lt;br /&gt;
* [http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm]&lt;br /&gt;
* [http://wiringpi.com/download-and-install/ http://wiringpi.com/download-and-install/]&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:GPIOs schalten}}&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13583</id>
		<title>Weekprofile</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13583"/>
		<updated>2016-01-14T13:55:21Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Eingabeformat für Wochenprofile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Das Modul 98_weekprofile.pm stellt Funktionen zur Verwaltung von Wochenprofilen für Heizkörperthermostate zur Verfügung. Momentan werden die folgenden Systeme unterstützt:&lt;br /&gt;
&lt;br /&gt;
* [[MAX]]&lt;br /&gt;
* [[HomeMatic]]&lt;br /&gt;
&lt;br /&gt;
Momentan ist es möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden. Ein Import bestehender Profile aus den Devices ist momentan noch nicht möglich.&lt;br /&gt;
&lt;br /&gt;
== Eingabeformat für Wochenprofile ==&lt;br /&gt;
&lt;br /&gt;
Die Wochenprofile werden mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; profile_data &amp;lt;profilename&amp;gt; &amp;lt;json data&amp;gt;&amp;lt;/code&amp;gt; angelegt. Die eigentlichen Daten liegen dabei in einer [https://de.wikipedia.org/wiki/JavaScript_Object_Notation JSON] Datenstruktur, die wie folgt aussieht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;Sun&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Sat&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Thu&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Fri&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Tue&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Wed&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Mon&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es handelt sich dabei um eine unsortierte Liste von &amp;quot;Tages-Objekten&amp;quot;, die wiederum eine unsortierte Liste von Schlüssel - Werte-Liste Paaren enthält. Die beiden verwendeten Schlüssel &amp;quot;time&amp;quot; und &amp;quot;temp&amp;quot; für Zeit und Temperatur verweisen jeweils auf eine sortierte Liste mit Werten. &lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;time&amp;quot; enthält die Liste die gewünschten Zeitpunkte, zu denen ein Temperaturwechsel stattfinden soll. Die Zeitangaben müssen im Format &amp;quot;hh:mm&amp;quot; angegeben werden. Falls für den ganzen Tag nur eine Temperatur verwendet werden soll, so ist als Zeitpunkt &amp;quot;24:00&amp;quot; anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;temp&amp;quot; enthält die Temperaturen, die zu den in &amp;quot;time&amp;quot; hinterlegten Schaltzeitpunkten eingestellt werden sollen. Dabei entspricht die Reihenfolge der Temperaturen der Reihenfolge der Zeitpunkte in &amp;quot;time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zur Übergabe an FHEM sollte die JSON Struktur um sämtliche Formatierungen (Zeilenumbrüche, Tabs, überflüssige Leerzeichen) bereinigt werden, so dass ein einzeiliger String entsteht. Für das oben angegebene Beispiel würde das dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;Sun&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Sat&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Thu&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Fri&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Tue&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Wed&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Mon&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für eine einfache Bearbeitung der JSON Daten empfiehlt sich ein JSON-Editor wie z.B. [http://www.jsoneditoronline.org/].&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13582</id>
		<title>Weekprofile</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13582"/>
		<updated>2016-01-14T13:50:46Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Eingabeformat für Wochenprofile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Das Modul 98_weekprofile.pm stellt Funktionen zur Verwaltung von Wochenprofilen für Heizkörperthermostate zur Verfügung. Momentan werden die folgenden Systeme unterstützt:&lt;br /&gt;
&lt;br /&gt;
* [[MAX]]&lt;br /&gt;
* [[HomeMatic]]&lt;br /&gt;
&lt;br /&gt;
Momentan ist es möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden. Ein Import bestehender Profile aus den Devices ist momentan noch nicht möglich.&lt;br /&gt;
&lt;br /&gt;
== Eingabeformat für Wochenprofile ==&lt;br /&gt;
&lt;br /&gt;
Die Wochenprofile werden mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; profile_data &amp;lt;profilename&amp;gt; &amp;lt;json data&amp;gt;&amp;lt;/code&amp;gt; angelegt. Die eigentlichen Daten liegen dabei in einer [https://de.wikipedia.org/wiki/JavaScript_Object_Notation JSON] Datenstruktur, die wie folgt aussieht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;Sun&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Sat&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Thu&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Fri&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Tue&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Wed&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Mon&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es handelt sich dabei um eine unsortierte Liste von &amp;quot;Tages-Objekten&amp;quot;, die wiederum eine unsortierte Liste von Schlüssel - Werte-Liste Paaren enthält. Die beiden verwendeten Schlüssel &amp;quot;time&amp;quot; und &amp;quot;temp&amp;quot; für Zeit und Temperatur verweisen jeweils auf eine sortierte Liste mit Werten. &lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;time&amp;quot; enthält die Liste die gewünschten Zeitpunkte, zu denen ein Temperaturwechsel stattfinden soll. Die Zeitangaben müssen im Format &amp;quot;hh:mm&amp;quot; angegeben werden. Falls für den ganzen Tag nur eine Temperatur verwendet werden soll, so ist als Zeitpunkt &amp;quot;24:00&amp;quot; anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;temp&amp;quot; enthält die Temperaturen, die zu den in &amp;quot;time&amp;quot; hinterlegten Schaltzeitpunkten eingestellt werden sollen. Dabei entspricht die Reihenfolge der Temperaturen der Reihenfolge der Zeitpunkte in &amp;quot;time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zur Übergabe an FHEM sollte die JSON Struktur um sämtliche Formatierungen (Zeilenumbrüche, Tabs, überflüssige Leerzeichen) bereinigt werden, so dass ein einzeiliger String entsteht. Für das oben angegebene Beispiel würde das dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;lt;nowiki&amp;gt;{&amp;quot;Sun&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Sat&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Thu&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Fri&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Tue&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Wed&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Mon&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für eine einfache Bearbeitung der JSON Daten empfiehlt sich ein JSON-Editor wie z.B. [http://www.jsoneditoronline.org/].&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13581</id>
		<title>Weekprofile</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weekprofile&amp;diff=13581"/>
		<updated>2016-01-14T13:34:12Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Beschreibung der JSON Syntax für weekprofile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Das Modul 98_weekprofile.pm stellt Funktionen zur Verwaltung von Wochenprofilen für Heizkörperthermostate zur Verfügung. Momentan werden die folgenden Systeme unterstützt:&lt;br /&gt;
&lt;br /&gt;
* [[MAX]]&lt;br /&gt;
* [[HomeMatic]]&lt;br /&gt;
&lt;br /&gt;
Momentan ist es möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden. Ein Import bestehender Profile aus den Devices ist momentan noch nicht möglich.&lt;br /&gt;
&lt;br /&gt;
== Eingabeformat für Wochenprofile ==&lt;br /&gt;
&lt;br /&gt;
Die Wochenprofile werden mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; profile_data &amp;lt;profilename&amp;gt; &amp;lt;json data&amp;gt;&amp;lt;/code&amp;gt; angelegt. Die eigentlichen Daten liegen dabei in einer [https://de.wikipedia.org/wiki/JavaScript_Object_Notation JSON] Datenstruktur, die wie folgt aussieht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;Sun&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Sat&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Thu&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Fri&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Tue&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Wed&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;Mon&amp;quot;: {&lt;br /&gt;
    &amp;quot;time&amp;quot;: [&lt;br /&gt;
      &amp;quot;06:00&amp;quot;,&lt;br /&gt;
      &amp;quot;22:00&amp;quot;,&lt;br /&gt;
      &amp;quot;24:00&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;temp&amp;quot;: [&lt;br /&gt;
      &amp;quot;20.0&amp;quot;,&lt;br /&gt;
      &amp;quot;22.0&amp;quot;,&lt;br /&gt;
      &amp;quot;20.0&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es handelt sich dabei um eine unsortierte Liste von &amp;quot;Tages-Objekten&amp;quot;, die wiederum eine unsortierte Liste von Schlüssel - Werte-Liste Paaren enthält. Die beiden verwendeten Schlüssel &amp;quot;time&amp;quot; und &amp;quot;temp&amp;quot; für Zeit und Temperatur verweisen jeweils auf eine sortierte Liste mit Werten. &lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;time&amp;quot; enthält die Liste die gewünschten Zeitpunkte, zu denen ein Temperaturwechsel stattfinden soll. Die Zeitangaben müssen im Format &amp;quot;hh:mm&amp;quot; angegeben werden. Falls für den ganzen Tag nur eine Temperatur verwendet werden soll, so ist als Zeitpunkt &amp;quot;24:00&amp;quot; anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Schlüssel &amp;quot;temp&amp;quot; enthält die Temperaturen, die zu den in &amp;quot;time&amp;quot; hinterlegten Schaltzeitpunkten eingestellt werden sollen. Dabei entspricht die Reihenfolge der Temperaturen der Reihenfolge der Zeitpunkte in &amp;quot;time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zur Übergabe an FHEM sollte die JSON Struktur um sämtliche Formatierungen (Zeilenumbrüche, Tabs, überflüssige Leerzeichen) bereinigt werden, so dass ein einzeiliger String entsteht. Für das oben angegebene Beispiel würde das dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;lt;nowiki&amp;gt;{&amp;quot;Sun&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Sat&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Thu&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Fri&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Tue&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Wed&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]},&amp;quot;Mon&amp;quot;:{&amp;quot;time&amp;quot;:[&amp;quot;06:00&amp;quot;,&amp;quot;22:00&amp;quot;,&amp;quot;24:00&amp;quot;],&amp;quot;temp&amp;quot;:[&amp;quot;20.0&amp;quot;,&amp;quot;22.0&amp;quot;,&amp;quot;20.0&amp;quot;]}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=System%C3%BCbersicht&amp;diff=13572</id>
		<title>Systemübersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=System%C3%BCbersicht&amp;diff=13572"/>
		<updated>2016-01-13T13:28:29Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Protokolle */ MAX! Frequenz angepasst auf Wert von Hersteller Webseite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Fhem &#039;&#039;&#039;System&#039;&#039;&#039; besteht im Prinzip aus den in der nachfolgenden &#039;&#039;&#039;Übersicht&#039;&#039;&#039; aufgeführten Bestandteilen.&lt;br /&gt;
[[Datei:Systemübersicht.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Bei der Komponente &#039;&#039;&#039;Server&#039;&#039;&#039; muss unterschieden werden zwischen dem eigentlichen &#039;&#039;&#039;Fhem&#039;&#039;&#039; Hausautomations-Server (implementiert in der Perl-Datei fhem.pl) und der Hardware, auf der dieser Server ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
Als Server &#039;&#039;&#039;Hardware&#039;&#039;&#039; sind (z.&amp;amp;nbsp;B.) möglich:&lt;br /&gt;
* Windows Rechner&lt;br /&gt;
* Linux Rechner&lt;br /&gt;
* OS X Rechner&lt;br /&gt;
* Router (z.&amp;amp;nbsp;B. [[AVM Fritz!Box|FritzBox]])&lt;br /&gt;
* Einplatinencomputer, wie [[:Kategorie:Raspberry Pi|Raspberry Pi]], BeagleBone&lt;br /&gt;
* DockStar, PogoPlug, etc.&lt;br /&gt;
* diverse NAS Systeme wie Buffalo Linkstation, Synology Diskstation&lt;br /&gt;
(Diese Aufstellung ist nur eine unvollständige Auswahl; Details zu unterstützten Server Systemen finden sich in der Kategorie [[:Kategorie:Server Hardware|Server Hardware]]).&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Das Hausautomations-System wird definiert über die [[Konfiguration]], die im Regelfall besteht aus der &lt;br /&gt;
* reinen Textdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; (Standard nach der Erstinstallation) oder alternativ einer&lt;br /&gt;
* [[configdb|SQL-Datenbank]]&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration enthält Definitionen für die Bestandteile (Geräte) und Funktionen des jeweiligen Hausautomations-Systems. Die verfügbaren Befehle und deren Syntax sind in der Befehlsreferenz ([http://fhem.de/commandref.html commandref]) aufgeführt und beschrieben. Zu einigen Hilfsmodulen gibt es [[:Kategorie:Hilfsmodul|detaillierte Beschreibungen]] mit Beispielen.&lt;br /&gt;
&lt;br /&gt;
== Benutzeroberfläche ==&lt;br /&gt;
Der Zugriff auf FHEM erfolgt mittels Webbrowser oder App über die verfügbaren &#039;&#039;&#039;[[:Kategorie:FHEM Frontends|Fhem Benutzeroberflächen]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In den Fhem Server integriert ist ein Webserver ([[PGM2]]), der im Prinzip immer zur Verfügung steht. Abhängig vom benutzten Klienten ist PGM2 über &lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8083/fhem&amp;lt;/code&amp;gt; (Desktop-Darstellung = Port 8083),&lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8084/fhem&amp;lt;/code&amp;gt; (Smartphone-Darstellung = Port 8084) oder &lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8085/fhem&amp;lt;/code&amp;gt; (Tablet-Darstellung = Port 8085) &lt;br /&gt;
erreichbar.&lt;br /&gt;
&lt;br /&gt;
Eine Auswahl der Benutzeroberflächen:&lt;br /&gt;
* PGM2 - das Standardinterface&lt;br /&gt;
* [[FLOORPLAN]]&lt;br /&gt;
* [[FHEM Tablet UI]]&lt;br /&gt;
* [[SmartVisu]]&lt;br /&gt;
* diverse Apps für iOS und Android (Auswahl unter: [[:Kategorie:FHEM Frontends|Fhem Benutzeroberflächen]])&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Screenshots diverser Benutzeroberflächen: http://fhem.de/fhem.html#Screenshots&lt;br /&gt;
&lt;br /&gt;
== Module ==&lt;br /&gt;
Die Funktionalität von Fhem kann über &#039;&#039;&#039;Module&#039;&#039;&#039; erweitert werden. Module können die unterschiedlichsten Aufgaben übernehmen vom Anbinden eines Hardwaresystems&lt;br /&gt;
über die Bereitstellung eines Frontends bis zur Automatisierung von Aufgaben. Beispiele für Module:&lt;br /&gt;
* 00_CUL.pm - Implementierung der Unterstützung für den [[CUL]]&lt;br /&gt;
* 11_FHT.pm - Unterstützung der [[:Kategorie:FHT Components|FHT]] Heizungssteuerung&lt;br /&gt;
* 95_FLOORPLAN.pm - Grundriss (oder Ähnliches) als Benutzeroberfläche &lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Module können unterteilt werden in&lt;br /&gt;
* [[:Kategorie:FhemBefehl|Befehlsmodule]] (FhemBefehle sind teilweise eigenständige Module) &lt;br /&gt;
* [[:Kategorie:Hilfsmodul|Hilfsmodule]]&lt;br /&gt;
* [[:Kategorie:Gerätemodul|Gerätemodule]]&lt;br /&gt;
Die offiziell in Fhem enthaltenen Module sind in der [http://fhem.de/commandref Commandref] beschrieben. Sie werden über den [[Update]]-Befehl von Fhem verteilt und aktualisiert. Voraussetzung für die Aufnahme als offizielles Modul sind Supportwille durch den Entwickler und Dokumentation des Moduls.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich existiert eine Vielzahl von [[:Kategorie:Modul (Inoffiziell)|inoffiziellen Modulen]], die manuell in Fhem installiert werden müssen. Auch die Aktualisierung erfolgt nicht über den Update-Befehl, sondern muss durch den Nutzer selbst erfolgen. Inoffizielle Module sind an den verschiedensten Stellen zu finden:&lt;br /&gt;
* [[:Kategorie:Modul (Contrib)|Contrib]]-Verzeichnis im offiziellen Fhem-Sourcecode-SVN [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/]&lt;br /&gt;
* Beiträge im Fhem-Forum&lt;br /&gt;
* private Homepages&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
Die Verbindung zu den angeschlossenen &#039;&#039;&#039;Geräten&#039;&#039;&#039; der Hausautomation wird im Allgemeinen - geräteabhängig - über [[Interface|Interfaces]] (manchmal auch als &#039;&#039;&#039;Gateway&#039;&#039;&#039; bezeichnet) hergestellt. Das kann z.&amp;amp;nbsp;B. im Falle von [[HomeMatic]] ein [[HMLAN Konfigurator]] sein, ein mittels LAN mit dem Fhem Server verbundenes Gerät, das die Fhem Steuerbefehle  in das HomeMatic Funkprotokoll umsetzt - und auch die Funktelegramme der HomeMatic Komponenten an Fhem zurückgibt. Entsprechende Interfaces gibt es auch für andere Funkprotokolle und für die drahtgebundenen Systeme.&lt;br /&gt;
&lt;br /&gt;
Eine (unvollständige) Liste solcher Interfaces (siehe auch [[:Kategorie:Interfaces|Kategorie Interfaces]]):&lt;br /&gt;
* [[CUL]] - je nach Einstellung für die Kommunikation mit [[:Kategorie:FS20 Components|FS20]], [[:Kategorie:FHT Components|FHT]] und andere [[SlowRF]] Protokolle, [[MAX|MAX!]] Heizungssteuerung oder [[:Kategorie:HomeMatic Components|HomeMatic]] und, mit Einschränkungen, InterTechno (nur senden)&lt;br /&gt;
* [[CUNO]], ähnlich CUL, jedoch nicht per USB sondern per IP angebunden (z.Zt. -Stand Januar 2014 - nicht für HomeMatic empfohlen)&lt;br /&gt;
* [[HMLAN Konfigurator|HomeMatic LAN Konfigurations-Adapter]] - HomeMatic&lt;br /&gt;
* [[MAX#MAXLAN|MAX! Cube LAN-Gateway]]&lt;br /&gt;
* Schnittstellen(karten) für [[:Kategorie:1-Wire|1-Wire]]&lt;br /&gt;
* TCM(120/310) zur Anbindung von [[:Kategorie:EnOcean Components|EnOcean]]&lt;br /&gt;
* [[Arduino]] mit Firmata über USB oder Netzwerk&lt;br /&gt;
* [[panStamp]] als Möglichkeit Arduinos mit diversen Sensor- und I/O- Boards per 868MHz Funk über das SWAP protokoll anzubinden&lt;br /&gt;
* [[JeeLink]], ein weiteres USB-Stick Interface (ebenfalls arduino basiert) für diverse 433MHz und 868MHz Komponenten&lt;br /&gt;
* [[RFXtrx]] für InterTechno, RSL, ELRO etc., Wetter-Sensoren (Oregon-Scientific, Cresta, La Crosse, TFA, UPM) und andere 433&amp;amp;nbsp;Mhz Geräte.&lt;br /&gt;
* manche Komponenten ([[:Kategorie:IP Components|IP Komponenten]]) können über TCP/IP (LAN) direkt vom Fhem Server aus angesprochen werden; hier ist dann kein weiteres Interface im eigentlichen Sinne erforderlich. Dies gilt auch für diverse Module die Geräte über WEB Dienste des Herstellers anbinden (z.&amp;amp;nbsp;B. Withings, [[netatmo]]).&lt;br /&gt;
&lt;br /&gt;
== Protokolle ==&lt;br /&gt;
Der Kommunikation zwischen Interfaces und Geräten liegt jeweils ein bestimmtes Protokoll zugrunde. Unterstützte Protokolle mit ihren Eigenschaften sind in der folgenden Tabelle aufgelistet.&lt;br /&gt;
&amp;lt;!-- Bitte Informationen in die nachfolgende Tabelle eintragen.&lt;br /&gt;
* SlowRF (1&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
** FS20&lt;br /&gt;
** FHT&lt;br /&gt;
** S300&lt;br /&gt;
** HMS&lt;br /&gt;
** EM&lt;br /&gt;
* HomeMatic (20&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
* MAX! (20&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
* EnOcean&lt;br /&gt;
* FRM* (Arduino Firmata)&lt;br /&gt;
* IT (InterTechno, 433&amp;amp;nbsp;MHz)&lt;br /&gt;
* SWAP&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Übersicht über unterstützte Funkprotokolle&lt;br /&gt;
|-&lt;br /&gt;
! Name !! rfMode !! Frequenz !! Modulation !! Datenrate !! class=&amp;quot;unsortable&amp;quot; | Interfaces !! class=&amp;quot;unsortable&amp;quot; | Modul !! class=&amp;quot;unsortable&amp;quot; | Geräte (Beispiel) !! class=&amp;quot;unsortable&amp;quot; | Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [[FS20_Allgemein|FS20]] || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#FS20 FS20] || - || -&lt;br /&gt;
|-&lt;br /&gt;
| FHT  || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_FHTTK FHTTK], [http://fhem.de/commandref.html#FHT FHT] || Heizungsregelung || -&lt;br /&gt;
|-&lt;br /&gt;
| S300 || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_WS CUL_WS] || Temperatur-/Feuchtesensoren || -&lt;br /&gt;
|-&lt;br /&gt;
| HMS || SlowRF || 868,35MHz || AM || 1kHz || CU*O, FHZ || - || ?? || -&lt;br /&gt;
|-&lt;br /&gt;
| EM || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_EM CUL_EM] || Energiemonitore (Strom, Gas) || -&lt;br /&gt;
|-&lt;br /&gt;
| [[HomeMatic ]]|| HomeMatic || 868,3MHz || FM || 20kHz || CU*, [[HM-CFG-LAN_LAN_Konfigurations-Adapter|HMLan]], [[HM-CFG-USB_USB_Konfigurations-Adapter|HMUsb]] || [http://fhem.de/commandref.html#CUL_HM CUL_HM]  || [[:Kategorie:HomeMatic_Components|diverse]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[MAX|MAX!]] || MAX || 868,3MHz || FM || 20kHz || CU*, [[MAX#MAXLAN|MAXLAN]] ||  [http://fhem.de/commandref_DE.html#MAX MAX] ||  [[:Kategorie:MAX|Wandthermostat, Heizkörperthermostate, Fensterkontakt, Zwischenstecker]] ||  -&lt;br /&gt;
|-&lt;br /&gt;
| IT || - || 433MHz || AM? || 1kHz || CU*433, || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| FRM || - || ?? || ?? || ?? || ?? || - || ?? || -&lt;br /&gt;
|-&lt;br /&gt;
| SWAP || - || 868 (433/915) MHz || GFSK || 38.3835 Kbps || panStamp (+panStick) || [http://fhem.de/commandref.html#SWAP SWAP] || RGB LED Driver, diverse Sensoren und Aktoren || -&lt;br /&gt;
|-&lt;br /&gt;
| [[:Kategorie:EnOcean  Components|EnOcean]] || - || 315 / 868 / 902 / 928MHz || ASK || 125 kbit/s || [http://fhem.de/commandref.html#TCM TCM] || [http://fhem.de/commandref.html#EnOcean EnOcean] || Batterielose Funksensoren, diverse Aktoren || -&lt;br /&gt;
|-&lt;br /&gt;
| PCA || - || 868,35MHz || ?? || ?? || [[JeeLink]] || [http://fhem.de/commandref.html#PCA301 PCA301] || [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]] || -&lt;br /&gt;
|-&lt;br /&gt;
| LaCrosse || - || 868,35MHz || ?? || ?? || [[JeeLink]] || [http://fhem.de/commandref.html#LaCrosse LaCrosse] || LaCrosse IT+ (Technoline) Sensoren || -&lt;br /&gt;
|-&lt;br /&gt;
| ZigBee Light Link || - || 2,4 GHz ||  ||  || HUE Bridge (RaspBee) || [http://fhem.de/commandref.html#HUEBridge HUEBridge] || Philips HUE und LightLink Lampen (auch Osram LIGHTIFY an der HUE-Bridge)|| [http://www.developers.meethue.com/documentation/how-hue-works]&lt;br /&gt;
|-&lt;br /&gt;
| [[:Kategorie:Z-Wave Components|Z-Wave]] || - || 868MHz || 2-FSK || 9.600 bit/s oder 40 Kbit/s || [http://fhem.de/commandref.html#ZWDongle ZWDongle] || [http://fhem.de/commandref.html#ZWave ZWave] || - || -&lt;br /&gt;
|-&lt;br /&gt;
| [[WMBUS]] || WMBus_T, WMBus_S || 868MHz || ?? || 100 kbit/s / 32.768 kbit/s || CU* || [http://fhem.de/commandref.html#WMBUS WMBUS] || Wasseruhren, Wärmezähler, Elektrozähler || - &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot; | &#039;&#039;Tabelle muss noch vervollständigt werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Legende:&#039;&#039;&#039; &lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | CU* = CUL, CUN, CUNO / &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Übersicht über drahtgebundene Systeme&lt;br /&gt;
|-&lt;br /&gt;
! Name !!  class=&amp;quot;unsortable&amp;quot; | Interfaces (Hardware) !! class=&amp;quot;unsortable&amp;quot; | Modul !! class=&amp;quot;unsortable&amp;quot; | Geräte (Beispiel) !! class=&amp;quot;unsortable&amp;quot; | Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [[1-Wire]]  || [[Interfaces für 1-Wire|diverse]] || [http://fhem.de/commandref.html#OWX OWX] || [[:Kategorie:1-Wire|1-Wire]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[EIB_/_KNX|EIB/KNX]]  || [http://fhem.de/commandref.html#TUL TUL] || [http://fhem.de/commandref.html#EIB EIB] || [[:Kategorie:EIB/KNX|EIB/KNX]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[HomeMatic Wired]]  || [[HomeMatic Wired RS485 LAN Gateway|HM485 LAN Gateway]] || [http://fhem.de/commandref.html#HM485_LAN HM485_LAN] || [[:Kategorie:HomeMatic Components|Präfix HMW]] || -&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;Tabelle muss noch vervollständigt werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Legende:&#039;&#039;&#039; &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
Der eigentliche Zweck eines Hausautomatisierungs-Projekts sind dann letztendlich die &#039;&#039;&#039;Geräte&#039;&#039;&#039; (Komponenten / Aktoren / [[:Kategorie:Schalter (Empfänger)|Empfänger]]), die automatisch gesteuert werden sollen, bzw. auch Auslöser für Aktionen ([[:Kategorie:Schalter (Sender)|Sender]]) und Lieferant von Datenmaterial ([[:Kategorie:Hardware Typen|Sensoren]]) sind.&lt;br /&gt;
&lt;br /&gt;
Diese Geräte sind, sofern es eine detaillierte Beschreibung dazu gibt, in den jeweiligen Unterseiten der [[:Kategorie:Hardware|Hardwareliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.enocean.com/de/home/ EnOcean] Homepage&lt;br /&gt;
* [http://www.elv.de ELV], (Haupt-)Lieferant von FS20, FHT, HomeMatic, MAX!&lt;br /&gt;
* [http://www.panstamp.com panStamp], panStamp Hersteller&lt;br /&gt;
* [http://jeelabs.com/products/jeelink Jeelabs], JeeLink Hersteller&lt;br /&gt;
* [http://www.zigbee.org/ Zigbee] Homepage&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=System%C3%BCbersicht&amp;diff=13418</id>
		<title>Systemübersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=System%C3%BCbersicht&amp;diff=13418"/>
		<updated>2016-01-01T12:29:45Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Protokolle */ HomeMatic Frequenz auf die beim Hersteller angegebenen 868,3 MHz geändert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Fhem &#039;&#039;&#039;System&#039;&#039;&#039; besteht im Prinzip aus den in der nachfolgenden &#039;&#039;&#039;Übersicht&#039;&#039;&#039; aufgeführten Bestandteilen.&lt;br /&gt;
[[Datei:Systemübersicht.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Bei der Komponente &#039;&#039;&#039;Server&#039;&#039;&#039; muss unterschieden werden zwischen dem eigentlichen &#039;&#039;&#039;Fhem&#039;&#039;&#039; Hausautomations-Server (implementiert in der Perl-Datei fhem.pl) und der Hardware, auf der dieser Server ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
Als Server &#039;&#039;&#039;Hardware&#039;&#039;&#039; sind (z.&amp;amp;nbsp;B.) möglich:&lt;br /&gt;
* Windows Rechner&lt;br /&gt;
* Linux Rechner&lt;br /&gt;
* OS X Rechner&lt;br /&gt;
* Router (z.&amp;amp;nbsp;B. [[AVM Fritz!Box|FritzBox]])&lt;br /&gt;
* Einplatinencomputer, wie [[:Kategorie:Raspberry Pi|Raspberry Pi]], BeagleBone&lt;br /&gt;
* DockStar, PogoPlug, etc.&lt;br /&gt;
* diverse NAS Systeme wie Buffalo Linkstation, Synology Diskstation&lt;br /&gt;
(Diese Aufstellung ist nur eine unvollständige Auswahl; Details zu unterstützten Server Systemen finden sich in der Kategorie [[:Kategorie:Server Hardware|Server Hardware]]).&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Das Hausautomations-System wird definiert über die [[Konfiguration]], die im Regelfall besteht aus der &lt;br /&gt;
* reinen Textdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; (Standard nach der Erstinstallation) oder alternativ einer&lt;br /&gt;
* [[configdb|SQL-Datenbank]]&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration enthält Definitionen für die Bestandteile (Geräte) und Funktionen des jeweiligen Hausautomations-Systems. Die verfügbaren Befehle und deren Syntax sind in der Befehlsreferenz ([http://fhem.de/commandref.html commandref]) aufgeführt und beschrieben. Zu einigen Hilfsmodulen gibt es [[:Kategorie:Hilfsmodul|detaillierte Beschreibungen]] mit Beispielen.&lt;br /&gt;
&lt;br /&gt;
== Benutzeroberfläche ==&lt;br /&gt;
Der Zugriff auf FHEM erfolgt mittels Webbrowser oder App über die verfügbaren &#039;&#039;&#039;[[:Kategorie:FHEM Frontends|Fhem Benutzeroberflächen]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In den Fhem Server integriert ist ein Webserver ([[PGM2]]), der im Prinzip immer zur Verfügung steht. Abhängig vom benutzten Klienten ist PGM2 über &lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8083/fhem&amp;lt;/code&amp;gt; (Desktop-Darstellung = Port 8083),&lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8084/fhem&amp;lt;/code&amp;gt; (Smartphone-Darstellung = Port 8084) oder &lt;br /&gt;
* &amp;lt;code&amp;gt;serverhostnameoderIP:8085/fhem&amp;lt;/code&amp;gt; (Tablet-Darstellung = Port 8085) &lt;br /&gt;
erreichbar.&lt;br /&gt;
&lt;br /&gt;
Eine Auswahl der Benutzeroberflächen:&lt;br /&gt;
* PGM2 - das Standardinterface&lt;br /&gt;
* [[FLOORPLAN]]&lt;br /&gt;
* [[FHEM Tablet UI]]&lt;br /&gt;
* [[SmartVisu]]&lt;br /&gt;
* diverse Apps für iOS und Android (Auswahl unter: [[:Kategorie:FHEM Frontends|Fhem Benutzeroberflächen]])&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Screenshots diverser Benutzeroberflächen: http://fhem.de/fhem.html#Screenshots&lt;br /&gt;
&lt;br /&gt;
== Module ==&lt;br /&gt;
Die Funktionalität von Fhem kann über &#039;&#039;&#039;Module&#039;&#039;&#039; erweitert werden. Module können die unterschiedlichsten Aufgaben übernehmen vom Anbinden eines Hardwaresystems&lt;br /&gt;
über die Bereitstellung eines Frontends bis zur Automatisierung von Aufgaben. Beispiele für Module:&lt;br /&gt;
* 00_CUL.pm - Implementierung der Unterstützung für den [[CUL]]&lt;br /&gt;
* 11_FHT.pm - Unterstützung der [[:Kategorie:FHT Components|FHT]] Heizungssteuerung&lt;br /&gt;
* 95_FLOORPLAN.pm - Grundriss (oder Ähnliches) als Benutzeroberfläche &lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Module können unterteilt werden in&lt;br /&gt;
* [[:Kategorie:FhemBefehl|Befehlsmodule]] (FhemBefehle sind teilweise eigenständige Module) &lt;br /&gt;
* [[:Kategorie:Hilfsmodul|Hilfsmodule]]&lt;br /&gt;
* [[:Kategorie:Gerätemodul|Gerätemodule]]&lt;br /&gt;
Die offiziell in Fhem enthaltenen Module sind in der [http://fhem.de/commandref Commandref] beschrieben. Sie werden über den [[Update]]-Befehl von Fhem verteilt und aktualisiert. Voraussetzung für die Aufnahme als offizielles Modul sind Supportwille durch den Entwickler und Dokumentation des Moduls.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich existiert eine Vielzahl von [[:Kategorie:Modul (Inoffiziell)|inoffiziellen Modulen]], die manuell in Fhem installiert werden müssen. Auch die Aktualisierung erfolgt nicht über den Update-Befehl, sondern muss durch den Nutzer selbst erfolgen. Inoffizielle Module sind an den verschiedensten Stellen zu finden:&lt;br /&gt;
* [[:Kategorie:Modul (Contrib)|Contrib]]-Verzeichnis im offiziellen Fhem-Sourcecode-SVN [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/]&lt;br /&gt;
* Beiträge im Fhem-Forum&lt;br /&gt;
* private Homepages&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
Die Verbindung zu den angeschlossenen &#039;&#039;&#039;Geräten&#039;&#039;&#039; der Hausautomation wird im Allgemeinen - geräteabhängig - über [[Interface|Interfaces]] (manchmal auch als &#039;&#039;&#039;Gateway&#039;&#039;&#039; bezeichnet) hergestellt. Das kann z.&amp;amp;nbsp;B. im Falle von [[HomeMatic]] ein [[HMLAN Konfigurator]] sein, ein mittels LAN mit dem Fhem Server verbundenes Gerät, das die Fhem Steuerbefehle  in das HomeMatic Funkprotokoll umsetzt - und auch die Funktelegramme der HomeMatic Komponenten an Fhem zurückgibt. Entsprechende Interfaces gibt es auch für andere Funkprotokolle und für die drahtgebundenen Systeme.&lt;br /&gt;
&lt;br /&gt;
Eine (unvollständige) Liste solcher Interfaces (siehe auch [[:Kategorie:Interfaces|Kategorie Interfaces]]):&lt;br /&gt;
* [[CUL]] - je nach Einstellung für die Kommunikation mit [[:Kategorie:FS20 Components|FS20]], [[:Kategorie:FHT Components|FHT]] und andere [[SlowRF]] Protokolle, [[MAX|MAX!]] Heizungssteuerung oder [[:Kategorie:HomeMatic Components|HomeMatic]] und, mit Einschränkungen, InterTechno (nur senden)&lt;br /&gt;
* [[CUNO]], ähnlich CUL, jedoch nicht per USB sondern per IP angebunden (z.Zt. -Stand Januar 2014 - nicht für HomeMatic empfohlen)&lt;br /&gt;
* [[HMLAN Konfigurator|HomeMatic LAN Konfigurations-Adapter]] - HomeMatic&lt;br /&gt;
* [[MAX#MAXLAN|MAX! Cube LAN-Gateway]]&lt;br /&gt;
* Schnittstellen(karten) für [[:Kategorie:1-Wire|1-Wire]]&lt;br /&gt;
* TCM(120/310) zur Anbindung von [[:Kategorie:EnOcean Components|EnOcean]]&lt;br /&gt;
* [[Arduino]] mit Firmata über USB oder Netzwerk&lt;br /&gt;
* [[panStamp]] als Möglichkeit Arduinos mit diversen Sensor- und I/O- Boards per 868MHz Funk über das SWAP protokoll anzubinden&lt;br /&gt;
* [[JeeLink]], ein weiteres USB-Stick Interface (ebenfalls arduino basiert) für diverse 433MHz und 868MHz Komponenten&lt;br /&gt;
* [[RFXtrx]] für InterTechno, RSL, ELRO etc., Wetter-Sensoren (Oregon-Scientific, Cresta, La Crosse, TFA, UPM) und andere 433&amp;amp;nbsp;Mhz Geräte.&lt;br /&gt;
* manche Komponenten ([[:Kategorie:IP Components|IP Komponenten]]) können über TCP/IP (LAN) direkt vom Fhem Server aus angesprochen werden; hier ist dann kein weiteres Interface im eigentlichen Sinne erforderlich. Dies gilt auch für diverse Module die Geräte über WEB Dienste des Herstellers anbinden (z.&amp;amp;nbsp;B. Withings, [[netatmo]]).&lt;br /&gt;
&lt;br /&gt;
== Protokolle ==&lt;br /&gt;
Der Kommunikation zwischen Interfaces und Geräten liegt jeweils ein bestimmtes Protokoll zugrunde. Unterstützte Protokolle mit ihren Eigenschaften sind in der folgenden Tabelle aufgelistet.&lt;br /&gt;
&amp;lt;!-- Bitte Informationen in die nachfolgende Tabelle eintragen.&lt;br /&gt;
* SlowRF (1&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
** FS20&lt;br /&gt;
** FHT&lt;br /&gt;
** S300&lt;br /&gt;
** HMS&lt;br /&gt;
** EM&lt;br /&gt;
* HomeMatic (20&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
* MAX! (20&amp;amp;nbsp;kHz Datenrate)&lt;br /&gt;
* EnOcean&lt;br /&gt;
* FRM* (Arduino Firmata)&lt;br /&gt;
* IT (InterTechno, 433&amp;amp;nbsp;MHz)&lt;br /&gt;
* SWAP&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Übersicht über unterstützte Funkprotokolle&lt;br /&gt;
|-&lt;br /&gt;
! Name !! rfMode !! Frequenz !! Modulation !! Datenrate !! class=&amp;quot;unsortable&amp;quot; | Interfaces !! class=&amp;quot;unsortable&amp;quot; | Modul !! class=&amp;quot;unsortable&amp;quot; | Geräte (Beispiel) !! class=&amp;quot;unsortable&amp;quot; | Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [[FS20_Allgemein|FS20]] || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#FS20 FS20] || - || -&lt;br /&gt;
|-&lt;br /&gt;
| FHT  || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_FHTTK FHTTK], [http://fhem.de/commandref.html#FHT FHT] || Heizungsregelung || -&lt;br /&gt;
|-&lt;br /&gt;
| S300 || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_WS CUL_WS] || Temperatur-/Feuchtesensoren || -&lt;br /&gt;
|-&lt;br /&gt;
| HMS || SlowRF || 868,35MHz || AM || 1kHz || CU*O, FHZ || - || ?? || -&lt;br /&gt;
|-&lt;br /&gt;
| EM || SlowRF || 868,35MHz || AM || 1kHz || CU*, FHZ || [http://fhem.de/commandref.html#CUL_EM CUL_EM] || Energiemonitore (Strom, Gas) || -&lt;br /&gt;
|-&lt;br /&gt;
| [[HomeMatic ]]|| HomeMatic || 868,3MHz || FM || 20kHz || CU*, [[HM-CFG-LAN_LAN_Konfigurations-Adapter|HMLan]], [[HM-CFG-USB_USB_Konfigurations-Adapter|HMUsb]] || [http://fhem.de/commandref.html#CUL_HM CUL_HM]  || [[:Kategorie:HomeMatic_Components|diverse]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[MAX|MAX!]] || MAX || 868,35MHz || FM || 20kHz || CU*, [[MAX#MAXLAN|MAXLAN]] ||  [http://fhem.de/commandref_DE.html#MAX MAX] ||  [[:Kategorie:MAX|Wandthermostat, Heizkörperthermostate, Fensterkontakt, Zwischenstecker]] ||  -&lt;br /&gt;
|-&lt;br /&gt;
| IT || - || 433MHz || AM? || 1kHz || CU*433, || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| FRM || - || ?? || ?? || ?? || ?? || - || ?? || -&lt;br /&gt;
|-&lt;br /&gt;
| SWAP || - || 868 (433/915) MHz || GFSK || 38.3835 Kbps || panStamp (+panStick) || [http://fhem.de/commandref.html#SWAP SWAP] || RGB LED Driver, diverse Sensoren und Aktoren || -&lt;br /&gt;
|-&lt;br /&gt;
| [[:Kategorie:EnOcean  Components|EnOcean]] || - || 315 / 868 / 902 / 928MHz || ASK || 125 kbit/s || [http://fhem.de/commandref.html#TCM TCM] || [http://fhem.de/commandref.html#EnOcean EnOcean] || Batterielose Funksensoren, diverse Aktoren || -&lt;br /&gt;
|-&lt;br /&gt;
| PCA || - || 868,35MHz || ?? || ?? || [[JeeLink]] || [http://fhem.de/commandref.html#PCA301 PCA301] || [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]] || -&lt;br /&gt;
|-&lt;br /&gt;
| LaCrosse || - || 868,35MHz || ?? || ?? || [[JeeLink]] || [http://fhem.de/commandref.html#LaCrosse LaCrosse] || LaCrosse IT+ (Technoline) Sensoren || -&lt;br /&gt;
|-&lt;br /&gt;
| ZigBee Light Link || - || 2,4 GHz ||  ||  || HUE Bridge (RaspBee) || [http://fhem.de/commandref.html#HUEBridge HUEBridge] || Philips HUE und LightLink Lampen (auch Osram LIGHTIFY an der HUE-Bridge)|| [http://www.developers.meethue.com/documentation/how-hue-works]&lt;br /&gt;
|-&lt;br /&gt;
| [[:Kategorie:Z-Wave Components|Z-Wave]] || - || 868MHz || 2-FSK || 9.600 bit/s oder 40 Kbit/s || [http://fhem.de/commandref.html#ZWDongle ZWDongle] || [http://fhem.de/commandref.html#ZWave ZWave] || - || -&lt;br /&gt;
|-&lt;br /&gt;
| [[WMBUS]] || WMBus_T, WMBus_S || 868MHz || ?? || 100 kbit/s / 32.768 kbit/s || CU* || [http://fhem.de/commandref.html#WMBUS WMBUS] || Wasseruhren, Wärmezähler, Elektrozähler || - &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot; | &#039;&#039;Tabelle muss noch vervollständigt werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Legende:&#039;&#039;&#039; &lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | CU* = CUL, CUN, CUNO / &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Übersicht über drahtgebundene Systeme&lt;br /&gt;
|-&lt;br /&gt;
! Name !!  class=&amp;quot;unsortable&amp;quot; | Interfaces (Hardware) !! class=&amp;quot;unsortable&amp;quot; | Modul !! class=&amp;quot;unsortable&amp;quot; | Geräte (Beispiel) !! class=&amp;quot;unsortable&amp;quot; | Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [[1-Wire]]  || [[Interfaces für 1-Wire|diverse]] || [http://fhem.de/commandref.html#OWX OWX] || [[:Kategorie:1-Wire|1-Wire]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[EIB_/_KNX|EIB/KNX]]  || [http://fhem.de/commandref.html#TUL TUL] || [http://fhem.de/commandref.html#EIB EIB] || [[:Kategorie:EIB/KNX|EIB/KNX]] || -&lt;br /&gt;
|-&lt;br /&gt;
| [[HomeMatic Wired]]  || [[HomeMatic Wired RS485 LAN Gateway|HM485 LAN Gateway]] || [http://fhem.de/commandref.html#HM485_LAN HM485_LAN] || [[:Kategorie:HomeMatic Components|Präfix HMW]] || -&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;Tabelle muss noch vervollständigt werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Legende:&#039;&#039;&#039; &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
Der eigentliche Zweck eines Hausautomatisierungs-Projekts sind dann letztendlich die &#039;&#039;&#039;Geräte&#039;&#039;&#039; (Komponenten / Aktoren / [[:Kategorie:Schalter (Empfänger)|Empfänger]]), die automatisch gesteuert werden sollen, bzw. auch Auslöser für Aktionen ([[:Kategorie:Schalter (Sender)|Sender]]) und Lieferant von Datenmaterial ([[:Kategorie:Hardware Typen|Sensoren]]) sind.&lt;br /&gt;
&lt;br /&gt;
Diese Geräte sind, sofern es eine detaillierte Beschreibung dazu gibt, in den jeweiligen Unterseiten der [[:Kategorie:Hardware|Hardwareliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.enocean.com/de/home/ EnOcean] Homepage&lt;br /&gt;
* [http://www.elv.de ELV], (Haupt-)Lieferant von FS20, FHT, HomeMatic, MAX!&lt;br /&gt;
* [http://www.panstamp.com panStamp], panStamp Hersteller&lt;br /&gt;
* [http://jeelabs.com/products/jeelink Jeelabs], JeeLink Hersteller&lt;br /&gt;
* [http://www.zigbee.org/ Zigbee] Homepage&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic&amp;diff=11821</id>
		<title>HomeMatic</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic&amp;diff=11821"/>
		<updated>2015-07-25T10:16:48Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Umzug von CCU-2 zu Fhem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Achtung, diese Seite wird derzeit im Sinne einer klareren Beschreibung überarbeitet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HomeMatic&#039;&#039;&#039; (HM) ist ein System des Herstellers eQ-3 zur Steuerung und Überwachung von zahlreichen Aufgaben und Situationen im Haus. Erhältlich sind sowohl Geräte mit Funkschnittstelle 868.3 MHz, als auch (seit 2008) drahtgebundene Geräte mit RS485-Schnittstelle. Im Programm sind Geräte zur Heizungs- und Lichtsteuerung, Temperatur-, Luftfeuchte- und Feuchtemessung, Zutrittskontrolle, als Wasser-, Brand- und Bewegungsmelder sowie als Wetterstation, ferner gibt es noch Fernbedienungen und Statusdisplays.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
HomeMatic-Geräte können untereinander &#039;&#039;gepeert&#039;&#039; werden (engl. &#039;&#039;peers&#039;&#039; = &amp;quot;Gleiche&amp;quot;), im einfachsten Fall kann deshalb bereits ein Sensor (z.B. ein Temperatursensor) mit einem Aktor (z.B. einem Heizkörperregler) verbunden werden und diesen steuern. Hierbei können mehrere Sensoren und Aktoren untereinander verbunden werden, die Vorstellung der &amp;quot;Gleichen&amp;quot; ist also zutreffend.&lt;br /&gt;
&lt;br /&gt;
HomeMatic-Geräte können auch mit einer Zentrale verbunden (&#039;&#039;gepairt&#039;&#039;) werden, die dann einen Teil der Steuerungslogik übernehmen kann. Bei dieser Verbindung spricht man vom &#039;&#039;Pairing&#039;&#039;, weil jedes HomeMatic-Gerät nur mit einer Zentrale verbunden werden kann. Gepairte Geräte können auch nicht mehr direkt gepeert werden - dies geht dann nur noch unter Beteiligung der Zentrale.&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Für den Betrieb ohne Zentrale sind keine weiteren Voraussetzungen zu erfüllen.&lt;br /&gt;
===Zentrale von eQ-3===&lt;br /&gt;
Vom Hersteller eQ-3 selbst wird eine Zentrale (derzeit aktuell CCU-2) und Windows-Software zur Steuerung und Auswertung der HM-Komponenten angeboten.&lt;br /&gt;
&lt;br /&gt;
===Fhem als Zentrale===&lt;br /&gt;
Für den Einsatz mit Fhem wird eine Funkschnittstelle benötigt, in Frage kommen [[CUL]], der [[HMLAN Konfigurator]] oder ein [[HM-CFG-USB_USB_Konfigurations-Adapter|HM-CFG-USB]].&lt;br /&gt;
&#039;&#039;&#039;Fehlt Bemerkung zu Wired&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Umzug von CCU-2 zu Fhem===&lt;br /&gt;
Der Umzug einer bestehenden HomeMatic Installation von einer HomeMatic CCU-2 auf Fhem ist möglich. Um die an die Zentrale angebundenen Devices in Fhem ohne größere Umkonfiguration weiter verwenden zu können, muß die HM-Id und, falls verwendet, die AES-Schlüssel der CCU-2 in Fhem eingetragen werden. Hierzu müssen diese Daten aus der CCU-2 ausgelesen werden. Dazu wird per SSH (z.B. mit PuTTY unter Windows) eine Verbindung zur CCU-2 aufgebaut. Die HM-Id befindet sich in der Datei /usr/local/etc/config/rfd/BidCoS-RF.dev in einer Zeile wie dieser:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;device serial=&amp;quot;BidCoS-RF&amp;quot; type=&amp;quot;HM-RCV-50&amp;quot; address=&amp;quot;0xABCDEF&amp;quot; aes_key_index=&amp;quot;0&amp;quot; firmware_version=&amp;quot;2.11.9&amp;quot; bidcos_interface=&amp;quot;KEQ1234567&amp;quot; roaming=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die HM-Id ist der Wert im address Feld. Die dort angegebene hexadezimale Zahl (hier 0xABCDEF) ist die HM-Id und wird in Fhem ohne den Prefix &amp;quot;0x&amp;quot; eingetragen.&lt;br /&gt;
&lt;br /&gt;
Falls bereits AES-Schlüssel verwendet wurden, sind diese in der Datei /etc/config_templates/crypttool.cfg zu finden und können 1:1 als Schlüssel im HMLAN in der gleichen Reihenfolge hinterlegt werden. &lt;br /&gt;
&lt;br /&gt;
==Prototokoll==&lt;br /&gt;
HM-Geräte kommunizieren untereinander mit dem Protokoll &#039;&#039;Bidirectional Communication Standard&#039;&#039;, abgekürzt &#039;&#039;BidCoS&#039;&#039;. Jedes HM-Gerät enthält also Sender und Empfänger, das ist einer der wesentlichen Unterschiede z.B. zum FS20-System.&lt;br /&gt;
*Jedes HM-Gerät meldet beim Empfang eines Steuerbefehls durch einen Peer an diesen eine Bestätigung „ACK“ zurück. Erkennt das HM-Gerät den Befehl nicht, sendet es ein &#039;&#039;NACK&#039;&#039;. Kommt vom HM-Gerät keine Rückmeldung innerhalb einer festgelegten Zeit, meldet der steuernde Peer ein &#039;&#039;MISSING ACK&#039;&#039;.&lt;br /&gt;
*Jedes HM-Gerät meldet ferner seinen Status nach dem Erhalt eines Steuerbefehls zurück - so kann auch ein lokal am Gerät erfolgender Tastendruck in beim steuernden Peer oder  in der Zentrale registriert werden.&lt;br /&gt;
&lt;br /&gt;
Das Protokoll &#039;&#039;BidCoS&#039;&#039; wurde zum großen Teil entschlüsselt, seine offen verfügbare Variante heißt &#039;&#039;AskSin&#039;&#039;. Unter Verwendung der AskSin-Library entstehen derzeit erste Geräte, die in das HomeMatic-System eingebunden werden können. Zur Unterscheidung zwischen HM und den neuen Geräten werden diese als HomeBrew (HB) bezeichnet, siehe hier [[Kategorie:HomeBrew]]&lt;br /&gt;
=Betrieb mit Fhem=&lt;br /&gt;
Die Kenntnis des Dokumentes [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Einsteigerdokuments &amp;quot;Heimautomatisierung mit Fhem&amp;quot;] wird vorausgesetzt. Im Anhang dieses Dokuments findet sich ein Teil über den Aufbau und die Funktion von HM-Geräten.&lt;br /&gt;
&lt;br /&gt;
=== Einrichten des IO-Devices (Funkschnittstelle)===&lt;br /&gt;
Zuerst muss ein IO-Device eingerichtet werden, um mit HM Geräten kommunizieren zu können. Siehe hierzu [[HMLAN Konfigurator]].&lt;br /&gt;
&lt;br /&gt;
=== Struktur von HM Geräten===&lt;br /&gt;
HM Geräte sind logisch in ein &#039;&#039;&#039;Device&#039;&#039;&#039; und ein oder mehrere &#039;&#039;&#039;Kanäle&#039;&#039;&#039; gegliedert. Jedes Device und jeder Kanal (Channel) wird in einer Entity in FHEM repräsentiert. &amp;lt;br&amp;gt;&lt;br /&gt;
Ausnahme: Sollte ein Gerät nur einen Kanal haben wird dieser in einer Entity mit dem Device eingerichtet. &lt;br /&gt;
====Device====&lt;br /&gt;
Das Device ist für die Kommunikation verantwortlich. Es sortiert und ordnet die zu sendenden und empfangenden Nachrichten. &lt;br /&gt;
Man kann prüfen, ob alle Nachrichten übertragen sind, oder ob es Probleme gegeben hat. Die Variablen &amp;quot;prot...&amp;quot; geben Auskunft darüber. Siehe auch [[Homematic_HMInfo#protoEvents]].&lt;br /&gt;
Zu beachten sind zudem die Übertragungsmodi. Nicht alle Devices sind ständig auf Empfang - FHEM muss berücksichtigen, wann gesendet werden kann. In &#039;&#039;&#039;protState&#039;&#039;&#039; kann man sehen, ob Kommandos auf Verarbeitung warten, also pending sind.&lt;br /&gt;
Einige Devices unterstützen mehrere Modi parallel. &lt;br /&gt;
===== Config=====&lt;br /&gt;
Wird von allen Devices unterstützt, auch wenn es bei Always kaum genutzt werden kann.&lt;br /&gt;
Man setzt die Kommandos in FHEM ab und diese warten in der Kommando-queue.  &lt;br /&gt;
Wenn die config-funktion am Device ausgelöst wird (Anlerntaste drücken) sendet FHEM die wartenden Nachrichten der Reihe nach.&lt;br /&gt;
Config wird bei allen Devices zum pairen genutzt.&lt;br /&gt;
===== Always=====&lt;br /&gt;
Trifft man meist bei netzbetriebenen Geräten an, da diese kein Problem mit dem Energieverbrauch haben. Man kann immer mit dem Device kommunizieren.&lt;br /&gt;
===== Burst=====&lt;br /&gt;
Nur der Empfänger des Device ist aktiv. Über eine Aufweck-sequenz kann das Device geweckt werden. Man kann quasi immer mit dem Device kommunizieren. Nachteil des Aufwecken ist zum Einen, dass immer ALLE Devices im Funknetz geweckt werden, was deren Batterie belastet. Zum Andere ist die Aufweck-sequenz funktechnisch aufwändig und belastet die maximal erlaubte Sendekapazität des IO device je Stunde. &lt;br /&gt;
===== ConditionalBurst=====&lt;br /&gt;
Bei einigen Devices kann man den Burst mode zuschalten. Dies sind Devices, die zusätzlich über andere modi verfügen, so z.B. wakeup. Schaltet man burst-empfang ein kann man immer und sofort mit dem Device reden, es kostet aber etwas mehr Batterie. Siehe hierzu Attribut &#039;&#039;&#039;burstAccess&#039;&#039;&#039;, Kommando &#039;&#039;&#039;burstXmit&#039;&#039;&#039; und Register &#039;&#039;&#039;burstRx&#039;&#039;&#039;&lt;br /&gt;
===== LazyConfig=====&lt;br /&gt;
Kommandos in der Queue werden bearbeitet, wenn eine Aktion vom Device ausgeht. So zum Beispiel ein Tastendruck bei einer Fernbedienung.&lt;br /&gt;
Dieser mode wird von CUL/CUNO nicht unterstützt. FHEM ignoriert diese Option automatisch und wartet i.a. auf ein Config.&lt;br /&gt;
&lt;br /&gt;
===== Wakeup=====&lt;br /&gt;
Die Devices wachen regelmäßig auf und senden Daten, z.B. Temperatursensoren. Zu diesem Zeitpunkt kann FHEM die Nachrichten übertragen. Die Aufwachperiode ist unterschiedlich von 3 min bis zu 24h.&lt;br /&gt;
&lt;br /&gt;
====Kanal====&lt;br /&gt;
Ein Kanal ist die Funktionseinheit des Geräts. Hier ist die Funktion des Sensors oder Aktors realisiert.&lt;br /&gt;
=== Variablen===&lt;br /&gt;
Wie alle FHEM Entities werden 4 Gruppen von Daten unterstützt: &lt;br /&gt;
* Internals: Im Web-Interface sichtbare Variablen, die allgemeine Informationen über den Zustand enthalten.&lt;br /&gt;
* Readings: Im Web-Interface sichtbare Variablen. Sie werden aus von Entites empfangenen Nachrichten generiert. Man kann mit notify Trigger auf die setzen. Readings werden im Statefile bei save und gewissen neustarts gesichert und beim Booten eingelesen. Readings haben einen Zeitstempel. &lt;br /&gt;
* Attribute: Im Web-Interface sichtbare Variablen. Über sie kann man die Eigenschaften der Entity in FHEM steuern. &lt;br /&gt;
* Helper: Im Web-Interface nicht sichtbare Variablen. Man kann sie mit dem Kommando &#039;list&#039; sehen. Es sind hilfsvariablen, die für den User keine Bedeutung haben sollen. &lt;br /&gt;
==== Internals====&lt;br /&gt;
Viele Variablen sind nicht HM spezifisch - deren Bedeutung muss in allgemeinen Teil nachgelesen werden. Spezifische Variablen sind:&lt;br /&gt;
*Device&lt;br /&gt;
** channel_xx: Liste der Kanäle, die dem Device zugeordnet sind. &lt;br /&gt;
** prot... : Gruppe von Daten zum Zustand des &amp;lt;u&amp;gt;[[HomeMatic#Protokol|Protokolls]]&amp;lt;/u&amp;gt;, also der Kommunikation mit dem Device.&lt;br /&gt;
** rssi...: Gruppe von Daten die den &amp;lt;u&amp;gt;[[HomeMatic#Rssi|Empfangspegel]]&amp;lt;/u&amp;gt; des Device bei IOs, Peers und Repeatern darstellt. &lt;br /&gt;
&lt;br /&gt;
*Kanäle&lt;br /&gt;
** device: Das übergeordnete Device&lt;br /&gt;
** chanNo: Die Kanalnummer&lt;br /&gt;
** peerList: Ist die Entity mit einem anderen gepeert ist steht hier der Name der Peers. Siehe auch attribut peerIDs und Reading peerList. Diese Variable ist mit dem peer verlinkt, man kann darauf &#039;clicken&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Readings====&lt;br /&gt;
Readings für HM Entites unterliegenden allgemeinen FHEM Regeln. &lt;br /&gt;
Generell gilt, dass ein Wert, der von FHEM gesetzt wurde mit dem prefix &#039;&#039;&#039;&amp;quot;set_&amp;quot;&#039;&#039;&#039; versehen wird. Wenn der Zustand bestätigt ist wird das set_ entfernt. Sollte man also ein Reading mit diesem prefix haben, das sich nicht selbst entfernt sollt man unbedingt den Zustand kontrollieren. &amp;lt;br&amp;gt;&lt;br /&gt;
So ist nach einem &amp;quot;set Licht on&amp;quot; der Zustand des Licht erst einemal &amp;quot;set_on&amp;quot;. Mit der Antwort des Device wird es dann auf &amp;quot;on&amp;quot; gesetzt. &amp;lt;br&amp;gt;&lt;br /&gt;
Register machen eine Ausnahme:&lt;br /&gt;
=====Register=====&lt;br /&gt;
Register sind Konfigurationsparameter, die &#039;&#039;&#039;im Device flash&#039;&#039;&#039; gespeichert werden. Daten, die Registern zureordnet sind beginnen mit &amp;quot;R-&amp;quot;. Sollte das Register einem peer zugeordnet sein kommt dieser danach. Der Namen ist also&lt;br /&gt;
&#039;&#039;&#039;R-&amp;lt;peer&amp;gt;-&amp;lt;registerName&amp;gt;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Der Zugriff ist indirekt, geht also nur über Methoden und Kommandos. Man kann die Konfiguration (Register und peers) mit &#039;&#039;&#039;getConfig&#039;&#039;&#039; aus dem Device lesen und in FHEM dargestellen. FHEM bemüht sich, die angezeigten Register aktuell zu halten - der User muss aber ein gewisse Vorsicht im Umgang damit walten lassen. Register können mit &#039;&#039;&#039;regSet&#039;&#039;&#039; gesetzt werden. Ob die gelesenen Register komplett sind prüft &amp;lt;u&amp;gt;[[Homematic_HMInfo#Integrit.C3.A4tspr.C3.BCfungen|configCheck]]&amp;lt;/u&amp;gt;.&lt;br /&gt;
Da einige Entities viele Register haben kann man mit dem Attribut &#039;&#039;&#039;expert&#039;&#039;&#039; die Sichtbarkeit steuern. &amp;lt;br&amp;gt;&lt;br /&gt;
siehe auch &amp;lt;u&amp;gt;[[Homematic_HMInfo#Infos|register]]&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Von einigen Devices sind Register schwer zu lesen, z.B. config devices. Man kann die Register-Readings &amp;lt;u&amp;gt;[[Homematic_HMInfo#archConfig|archivieren]]&amp;lt;/u&amp;gt; und beim reboot wieder &amp;lt;u&amp;gt;[[Homematic_HMInfo#archConfig|laden]]&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Attribute====&lt;br /&gt;
Attribute sind i.a. Parameter, die das Verhalten der Entity steuern. Sie werden mit &#039;&#039;&#039;save&#039;&#039;&#039; in fhem.cfg oder einem seiner subfiles gespeichert. Nach einer Änderung sollte der User ein &amp;quot;save&amp;quot; machen, sonst sind diese nach einem Reboot verloren.&amp;lt;br&amp;gt;&lt;br /&gt;
Hier werden nur &#039;&#039;&#039;HM spezifische Attribute&#039;&#039;&#039; besprochen.&amp;lt;br&amp;gt;&lt;br /&gt;
Attribute, die das System &#039;&#039;&#039;automatisch&#039;&#039;&#039; anlegt. Sollten diese nicht mehr stimmen kann der User anlernen am Device drücken und sie werden wieder hergestellt. Der User sollte sie &#039;&#039;&#039;nicht ändern&#039;&#039;&#039;.&lt;br /&gt;
* model&lt;br /&gt;
* subType&lt;br /&gt;
* peerIDs: HMIds der peers. Wird gelegentlich verschoben!&lt;br /&gt;
* serialNr: auslaufend - durch Reading D-serianNr ersetzt&lt;br /&gt;
* firmware: auslaufend - durch Reading D-firmware ersetzt&lt;br /&gt;
&lt;br /&gt;
Attribute für HM Entities, die der User steuern kann&lt;br /&gt;
* webCmd: FHEM setzt ggf. einen Default, der User kann dies anpassen&lt;br /&gt;
* expert: schaltet mehr oder weniger Readings sichtbar - dient der Übersichtlichkeit des Web-Interface. &lt;br /&gt;
* autoReadReg: steuert das automatische Lesen der Konfiguration - ggf. zeitverzögert um Resourcen zu schonen. Es wird Level 5 empfohlen&lt;br /&gt;
&lt;br /&gt;
Attribute für HM Entities am Device, die der User steuern kann&lt;br /&gt;
* msgRepeat: kann man im Device einstellen. Es legt fest wir oft eine Nachricht wiederholt werden soll, falls sie nicht empfangen wird. Beachte, dass unabhängig davon ein HMLAN/USB immer 3-mal probiert zu senden. Insbesondere bei Burst Devices sollte man einen niedrigen level einstellen.&lt;br /&gt;
* IODev: Sollte man auf das IO device setzen, über das zu diesem Device gesendet werden soll. Es wird i.a. beim Pairen gesetzt. &lt;br /&gt;
&lt;br /&gt;
Empfohlene Attribute außerhalb von HM&lt;br /&gt;
* event-on-change-reading .*&lt;br /&gt;
&lt;br /&gt;
===Kommandos===&lt;br /&gt;
====Allgemein====&lt;br /&gt;
* get &amp;lt;name&amp;gt; cmdList &#039;&#039;# zeigt alle Kommandos mit Parametern für diese Entity an&#039;&#039;&lt;br /&gt;
* clear [readings|register|rssi|msgEvents] &#039;&#039;# löschen von Readings oder Zählern&#039;&#039;&lt;br /&gt;
====Register kommandos====&lt;br /&gt;
* set &amp;lt;name&amp;gt; getConfig &#039;&#039;# liest alle Peers und Register. Auf ein Device angewendet werden ALLE channels auch gelesen&#039;&#039;&lt;br /&gt;
* set &amp;lt;name&amp;gt; regSet [prep|exec] &amp;lt;regName&amp;gt; &amp;lt;value&amp;gt; ... [&amp;lt;peerChannel&amp;gt;]&#039;&#039; #schreiben eines Registerwerts. Das Kommando landet im Kommandstack&#039;&#039;&lt;br /&gt;
* set &amp;lt;name&amp;gt; regbulk ...&#039;&#039;# kommando zum setzen von rohdaten und ganzen Registerlisten. Ausser zum re-configurieren eines ganzen Device eher nicht für den User zu gebrauchen&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* set &amp;lt;name&amp;gt; sign [on|off &#039;&#039;# setzt das Register um AES einzuschalten. Man sollte sich über AES &#039;&#039;&#039;vorher&#039;&#039;&#039; einlesen!!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* get &amp;lt;name&amp;gt; regList &#039;&#039;# zeigt alle Register, die diese Entity &#039;&#039;&#039;unterstützt&#039;&#039;&#039; - incl Beschreibung und Wertebereich. Als Anfänger sollte man einmal hinsehen!&#039;&#039;&lt;br /&gt;
* get &amp;lt;name&amp;gt; reg all &#039;&#039;# zeigt alle Register, die diese Entity &#039;&#039;&#039;hat&#039;&#039;&#039; und den aktuellen Wert&#039;&#039;&lt;br /&gt;
===Kommunikation===&lt;br /&gt;
Die Kommunikation zwischen Device und der Zentrale folgt einem Protokoll. Für die meisten Nachrichten erwartet der Sender eine Empfangsbestätigung. FHEM beachtet das Protokoll und implementiert es entsprechend der Fähigkeiten des IO device.&amp;lt;br&amp;gt;&lt;br /&gt;
Grundsätzlich kann jedes Device an jedes andere Nachrichten senden. Damit dies auch einen erfolg hat, müssen die Kanäle gepeert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Um FHEM zu erlauben, Nachrichten an das Device zu richten muss FHEM gepairt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Senden der Nachrichten macht IMMER das Device - ein Kanal selbst kann nicht wirklich senden. &lt;br /&gt;
====Protokoll====&lt;br /&gt;
Da für das Senden das Device verantwortlich ist sind hier die entsprechenden Informationen zu finden. Zu Beachten sind die &amp;lt;u&amp;gt;[[HomeMatic#Device|Übertragungsmodi]]&amp;lt;/u&amp;gt;, die ein Device unterstützt.  Die Internals &amp;quot;prot...&amp;quot; enthalten alle notwendigen Daten. &lt;br /&gt;
* protState: Der Zustand der Protokollmaschine&lt;br /&gt;
** CMDs_done: alle Nachrichten übertragen, eine Fehler in diesem Durchgang aufgetreten&lt;br /&gt;
** CMDs_done_Error:xx : es hat xx Fehler bei der letzten Übertragung gegeben. &lt;br /&gt;
** CMDs_pending: Nachrichten warten auf das Senden&lt;br /&gt;
** CMDs_processing... : die Nachrichtenübertragung ist im Gange&lt;br /&gt;
** Info_Cleared: die Protokoll Statistik wurde rückgesetzt&lt;br /&gt;
* protCmdPend: Anzahl der Nachrichten, die auf das Senden warten&lt;br /&gt;
* protCmdDel: Anzahl gelöschter Nachrichten aufgrund von Fehlern&lt;br /&gt;
* protCmdNack: Anzahl der negativen Acknowledges&lt;br /&gt;
* protCmdResnd: Anzahl der Wiederholungen - die Nachrichten wurden nicht gelöscht. &lt;br /&gt;
* protCmdResndFail: Anzahl der fehlgeschlagenen Wiederholungen - die Nachrichten wurden gelöscht. &lt;br /&gt;
* protCmdIOerr: Anzahl der IO Fehler - Übertragung war nicht Möglich, weil das IO Device Probleme hatte. Der Grund sollte im IO Device nachgesehen werden. &lt;br /&gt;
* protCmdIOdly: Anzahl der Verzögerungen aufgrund von IO Problemen&lt;br /&gt;
* protCmdTimedOn: Anzahl der Nachrichten, wenn ein Timer im Device genutzt wird - z.B. durch on-for-timer&lt;br /&gt;
* protCmdRcv: Anzahl empfangene Nachrichten&lt;br /&gt;
* protCmdSnd: Anzahl gesendete Nachrichten&lt;br /&gt;
* protCmdErrIoId_...: Anzahl der Sendeversuche zum Device von einer anderen Zentrale&lt;br /&gt;
* protCmdErrIoAttack: Anzahl der Sendeversuche zum Device die nicht von FHEM kam- es könnte ein Versuch sein, das System zu hacken. Dies wird auch im Reading &#039;&#039;&#039;sabotageAttack&#039;&#039;&#039; ausgegeben und man kann ein notify darauf ansetzen. &lt;br /&gt;
&lt;br /&gt;
* protCmdEvt_AESCom: Anzahl der AES Nachrichten von Device&lt;br /&gt;
* protCmdEvt_AESKey: Benutzter AES key&lt;br /&gt;
&lt;br /&gt;
Die Zähler können mit &#039;&#039;&#039;set &amp;lt;device&amp;gt; clear msgEvents&#039;&#039;&#039; rückgesetzt werden. Dies kann vor Konfigurationsänderungen Sinn machen, um Probleme besser erkennen zu können. &amp;lt;br&amp;gt;&lt;br /&gt;
Eine Übersicht kann man mit HMInfo &amp;lt;u&amp;gt;[[Homematic_HMInfo#protoEvents|protoEvents]]&amp;lt;/u&amp;gt; erhalten. Auch das Löschen aller Zähler ist von HMInfo aus möglich.&lt;br /&gt;
&lt;br /&gt;
====Rssi====&lt;br /&gt;
Zeigt den Empfangspegel, den ein Device von einem Anderen misst. Die Variablen sind in Internals abgelegt. Angegeben werden minimale und maximale Wert. Außerdem wird der Durchschnitt und die Anzahl der Nachrichten ausgewertet.&amp;lt;br&amp;gt;&lt;br /&gt;
HM liefert Empfangspegel am IO Device (FHEM standard) aber auch den Empfangspegel am Device selbst. Ebenfalls ausgewertet werden Pegel, die beim Senden zwischen Peers erreicht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Zähler können mit &#039;&#039;&#039;set &amp;lt;device&amp;gt; clear rssi&#039;&#039;&#039; rückgesetzt werden.&amp;lt;br&amp;gt; &lt;br /&gt;
Eine Übersicht erkält man mit HMInfo &amp;lt;u&amp;gt;[[Homematic_HMInfo#RSSI|Rssi]]&amp;lt;/u&amp;gt;. Das Löschen der Zähler aller HM devices ist von HMInfo aus möglich.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Man kann RSSI kontinuierlich aufzeichnen, wenn das Attribut &#039;&#039;&#039;rssiLog&#039;&#039;&#039; im Device gesetzt ist. Es wird ein Reading rssi_&amp;lt;name&amp;gt; erzeugt. Das generelle setzen dieses Attributs wird aus Performance-gründen nicht empfohlen.&lt;br /&gt;
&lt;br /&gt;
== Pair / Peer bzw. pairen und peeren ==&lt;br /&gt;
HM  Geräte können mit und ohne Zentrale betrieben werden. In FHEM wird davon ausgegangen, dass Geräte immer von einer Zentrale aus gesteuert werden können. Um dies zu erreichen muss das Device mit der Zentrale gepairt werden. &lt;br /&gt;
&lt;br /&gt;
=&amp;gt; &amp;lt;u&amp;gt;[[HomeMatic Devices pairen|Devices Pairen]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um einen Betrieb (auch)ohne Zentrale zu ermöglichen kann man Kanäle &amp;lt;ins&amp;gt;p&#039;&#039;&#039;ee&#039;&#039;&#039;ren&amp;lt;/ins&amp;gt;. Hier bei wird ein Sensor-Kanal mit einem Aktor-Kanal verknüpft werden. &lt;br /&gt;
siehe &amp;lt;u&amp;gt;[[Homematic_Peering_Beispiele|Channels peeren]]&amp;lt;/u&amp;gt; für Details.&lt;br /&gt;
&lt;br /&gt;
== HMInfo ==&lt;br /&gt;
Mit &amp;lt;u&amp;gt;[[Homematic_HMInfo|HMInfo]]&amp;lt;/u&amp;gt; kann man eine Übersicht der HM Installation erhalten, Konfiguration prüfen und Alarme gesammelt auswerten.&lt;br /&gt;
&lt;br /&gt;
== Besondere Entites ==&lt;br /&gt;
&lt;br /&gt;
=== Virtuelle Entities ===&lt;br /&gt;
Virtuelle Entities sind nicht reale HM Devices und Kanäle. Man kann sie als Sender und Empfänger nutzen, auch im Zusammenhang mit Rauchmeldern oder zur Steuerung von Heizungsventilen. Die spezifischen Anwendungen sind im entsprechenden Kapitel nachzulesen. &amp;lt;br&amp;gt;&lt;br /&gt;
Angelegt wird das Device, dann wird per Kommando eine Anzahl Kanäle angelegt. &lt;br /&gt;
  define &amp;lt;virtDev&amp;gt; CUL_HM 112233&lt;br /&gt;
  set &amp;lt;virtDev&amp;gt; virtual 10&lt;br /&gt;
jetzt hat man ein virtuelles Device mit 10 Kanälen angelegt. &lt;br /&gt;
Die die gültigen Kommandos kann man wie immer mit &#039;&#039;&#039;get &amp;lt;entity&amp;gt; cmdList&#039;&#039;&#039; erfahren.&amp;lt;br&amp;gt;&lt;br /&gt;
Auch einem Virtuellen Device sollte man das &#039;&#039;&#039;Attribut IODev setzen &#039;&#039;&#039;.&lt;br /&gt;
=== IO Entities ===&lt;br /&gt;
Analog virtuellen Entities kann man auch IO entities erzeugen. IO ist nicht ganz korrekt, eigentlich sind es Kanäle einer Zentrale. Da diese in FHEM nicht abgebildet wird sind sie teilweise in den IOs realisiert. &amp;lt;br&amp;gt;&lt;br /&gt;
Faktisch ist es ein Kanal, der der HMId des gewählten IO device zugeordnet ist. Aktuell wird dieser Kanal nicht in FHEM dargestellt. Man kann diese Entity jedoch peeren. &amp;lt;br&amp;gt;&lt;br /&gt;
Man kann jeder HMId bis zu 50 Kanäle zuweisen. Da mehrere IO devices die gleiche HMId nutzen können, teilen sich diese in diesem Fall die Kanäle.&lt;br /&gt;
&lt;br /&gt;
=== Action Detector===&lt;br /&gt;
Einige Devices der HM-Geräteserie senden periodisch Nachrichten. Manche alle 3 Minuten, andere alle 3 Tage. Wenn so eine Zeit für einen Device spezifiziert ist wird diese automatisch vom ActionDetector überwacht.&amp;lt;br&amp;gt;&lt;br /&gt;
Meist sind dies batteriebetriebene Geräte. Sollte aus irgendwelchen Gründen der Batteriealarm übersehen werden und das Gerät keine Nachricht mehr senden wird es auf Dead gesetzt.&lt;br /&gt;
Die Kontrollinstanz ist ein Pseudo-Gerät &amp;quot;ActionDetector&amp;quot; mit der HMId &amp;quot;000000&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
* attribut&lt;br /&gt;
** actCycle: gibt an, in welchen Abständen sich das Device melden muss&lt;br /&gt;
** actStatus: gibt den Zustand an&lt;br /&gt;
*** alive: Device hat sich in der erwarteten Zeit min einmal gemeldet&lt;br /&gt;
*** dead: Device hat sich in der erwarteten Zeit nicht gemeldet&lt;br /&gt;
*** unknown: Device hat sich nicht gemeldet, es ist aber seit dem letzten reboot die Zykluszeit noch nicht abgelaufen. &lt;br /&gt;
&lt;br /&gt;
* readings&lt;br /&gt;
** Activity:    entsprechend dem actStatus. &lt;br /&gt;
&lt;br /&gt;
* get&lt;br /&gt;
** listDevice:           Gibt alle Objekte zurück&lt;br /&gt;
** listDevice notActive: Gibt alle Objekte zurück die nicht &amp;quot;alive&amp;quot; sind&lt;br /&gt;
** listDevice alive:     Gibt alle Objekte zurück die &amp;quot;alive&amp;quot; sind&lt;br /&gt;
** listDevice unknown:   Gibt alle Objekte zurück die &amp;quot;unknown&amp;quot; sind&lt;br /&gt;
** listDevice dead:      Gibt alle Objekte zurück die &amp;quot;dead&amp;quot; sind&lt;br /&gt;
&lt;br /&gt;
Durch das Setzen des Attributs im HM device wird der ActionDetector automatisch definiert - nach einem save steht er auch in der fhem.cfg.&lt;br /&gt;
Alternativ ist auch eine manuelle Definition möglich und sollte in etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
 define ActionDetector CUL_HM 000000&lt;br /&gt;
 attr ActionDetector actCycle 30&lt;br /&gt;
 attr ActionDetector event-on-change-reading .*&lt;br /&gt;
 attr ActionDetector model ActionDetector&lt;br /&gt;
&lt;br /&gt;
Die HMId &amp;quot;000000&amp;quot; darf nicht geändert werden.&lt;br /&gt;
&lt;br /&gt;
In der Entity actionDetector kann man die Infos gesammelt einsehen.&lt;br /&gt;
Der User kann durch das Setzen des Attributs actCycle jedes Device in diese Liste aufnehmen. Es wird dann geprüft, ob sich das Device in dieser Zeit auch meldet. Der User muss dies aber selbst sicherstellen.&lt;br /&gt;
&lt;br /&gt;
== Tipps / HowTos / Beispiele ==&lt;br /&gt;
&lt;br /&gt;
* [[HomeMatic Devices pairen|HM Devices pairen]] zum &#039;&#039;&#039;Pairen&#039;&#039;&#039; der Geräte untereinander.&lt;br /&gt;
* [[CUL]] (also gleichzeitig)?&lt;br /&gt;
* [[Slider für HM-Rolladensteuerung anzeigen]]&lt;br /&gt;
* Für den &amp;quot;Fall der Fälle&amp;quot;: Erstellen Sie eine Liste aller HM-Geräte mit den Installationsorten, HM-Namen, Fhem-Namen &#039;&#039;&#039;und&#039;&#039;&#039; den Geräte-IDs. Falls Sie sich ihr Fhem einmal zerschießen, wird diese Liste sehr hilfreich sein. Zur Abwicklung von Gewährleistungsansprüchen sind Daten über Kaufdatum und Lieferant (bei größeren Installationen mit Zukauf in zeitlichen Abständen) ebenfalls angebracht.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== Messages Sniffen ===&lt;br /&gt;
Um Probleme besser nachvollziehen zu können, kann man &amp;lt;u&amp;gt;[[Homematic_Nachrichten_sniffen|Nachrichten mitsniffen]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Daten können empfangen werden, Befehle werden nicht übertragen ===&lt;br /&gt;
&lt;br /&gt;
Das kann mehrere Ursachen haben:&lt;br /&gt;
* P&#039;&#039;&#039;ai&#039;&#039;&#039;ring nicht abgeschlossen (bei den &#039;&#039;Readings&#039;&#039; &amp;quot;PairedTo&amp;quot; bzw. &amp;quot;R-pairCentral&amp;quot; steht der Wert &#039;&#039;&#039;set_&#039;&#039;&#039;0x1A2B3C). Das P&#039;&#039;&#039;ai&#039;&#039;&#039;ring ist erst dann erfolgreich abgeschlossen, wenn das &#039;&#039;&#039;set_&#039;&#039;&#039; fehlt, also nur noch (beispielhaft) &amp;quot;0x1A2B3C&amp;quot; steht. Siehe [[HomeMatic_Devices_pairen]]&lt;br /&gt;
* Sender (CUL/HM-LAN) und Empfänger (HM-Device) stehen zu nah (RSSI-Werte bei ~ &amp;quot;-17&amp;quot;) beieinander&lt;br /&gt;
* Sender (CUL/HM-LAN) und Empfänger (HM-Device) stehen zu weit (RSSI-Werte bei unter ~ &amp;quot;-80&amp;quot;) voneinander entfernt&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Notifys und anderes funktionieren nach einem Fhem-Neustart nicht mehr oder nicht mehr zeitnah ===&lt;br /&gt;
&lt;br /&gt;
Obwohl HomeMatic wegen der höhren Datenübertragungsrate wesentlich weniger von der [[1% Regel]] betroffen ist als z.b. FS20 oder FHT, so kann es dennoch zu Funkkontingentüberschreitungen kommen.&lt;br /&gt;
&lt;br /&gt;
Insbesondere ist bei FHEM Versionen ab Oktober 2013 das Attribut &#039;&#039;autoReadReg&#039;&#039; auf &amp;quot;4_reqStatus&amp;quot; gesetzt. Damit wird für jedes HM-Device mit diesem so gesetzten Attribut beim Fhem-Start ein &#039;&#039;getConfig&#039;&#039; durchgeführt, was viel Funkverkehr erfordert.&lt;br /&gt;
&lt;br /&gt;
Je nach Anzahl der Geräte kann dazu führen, dass insgesamt zu viel Funklast erzeugt wird, im Logfile erscheint dann eine Meldung wie:&lt;br /&gt;
&lt;br /&gt;
 2013.10.03 13:41:18 2: HMLAN_Parse: HMLAN1 new condition ERROR-Overload&lt;br /&gt;
&lt;br /&gt;
Ab diesem Moment werden eben auch keine anderen Befehle mehr an weitere HM-Geräte geschickt, da das Funkkontigent aufgebraucht ist. Erst nach einer Stunde kann erneut gesendet werden. Als &#039;&#039;&#039;Notbehelf&#039;&#039;&#039; kann die Funkschnittstelle resetted oder  ([[HMLAN Konfigurator]]) kurz stromlos gemacht werden. Dann wird der Zähler wieder auf Null gesetzt.&lt;br /&gt;
&lt;br /&gt;
Alternativ können so viele HM-Geräte wie möglich auf &#039;&#039;autoReadReg 0_off&#039;&#039; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[1% Regel]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
Die Batterielebensdauer der HomaMatic Komponenten ist durchwachsen. Besonders die mitgelieferten Batterien sind mitunter schon nach wenigen Wochen leer, trotzdem werden öfters keine &#039;&#039;battery low&#039;&#039; Meldung erzeugt. Bei Störung des Funkverkehrs (z.b. blinkendes Antennensymbol im HM-CC-TC und kurzes piepen zur vollen Stunde von morgens bis abends, fehlende ACK Meldungen, nicht auslösende IR-Bewegungssensoren und ähnliches) sollte also immer auch eine schlechte Spannungsversorgung in Betracht gezogen werden.&lt;br /&gt;
&lt;br /&gt;
Gute neue Batterien halten jedoch i.d.R. 12 Monate und mehr, auch Lebensdauern über 2 Jahre sind bei einigen Geräten (Tür/Fensterkontakte, Sender, Retroanzeige,  IR-Bewegungsmelder) keine Seltenheit.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.homematic.com/ HomeMatic] Homepage&lt;br /&gt;
* Hersteller [http://www.eq-3.de eQ-3] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-PB-2-WM55_2fach-Funk-Wandtaster&amp;diff=10949</id>
		<title>HM-PB-2-WM55 2fach-Funk-Wandtaster</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-PB-2-WM55_2fach-Funk-Wandtaster&amp;diff=10949"/>
		<updated>2015-04-09T11:04:09Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Integration in Jung CD 500 Markenschalterprogramm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HomeMatic HM-PB-2-WM55 2fach-Funk-Wandtaster&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bitte eintragen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
Die Integration in FHEM läuft wie mit allen Komponenten. Den LAN-Adapter in FHEM auf hmPairForSec 60 (Zahl bedeutet die Zeit des Zustands in Sekunden und kann beliebig geändert werden) setzen und den Knopf auf der Rückseite des Schalters drücken. Dann sollte der Schalter wie unten dargestellt in FHEM angelegt werden (wird in die fhem.cfg eingetragen). Je nach Einstellungen in autocreate (http://fhem.de/commandref.html#autocreate) kann es sein, dass auch noch weitere Aktionen ausgeführt wurden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
=== Auszug aus der fhem.cfg ===&lt;br /&gt;
Hier der Originaleintrag aus der fhem.cfg der automatisch erstellt wird (mit den &amp;quot;xxx&amp;quot; habe ich meine Nummer erstetzt):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define CUL_HM_HM_PB_2_WM55_1F1xxx CUL_HM 1F1xxx&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx .devInfo 020000&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx .stc 40&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx firmware 1.1&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx model HM-PB-2-WM55&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx room Bad&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx serialNr KEQ003xxx&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx subType pushButton&lt;br /&gt;
define FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx FileLog ./log/CUL_HM_HM_PB_2_WM55_1F1xxx-%Y.log CUL_HM_HM_PB_2_WM55_1F1xxx&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx logtype text&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx room CUL_HM&lt;br /&gt;
define CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 CUL_HM 1F1xxx01&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 model HM-PB-2-WM55&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 room CUL_HM&lt;br /&gt;
define FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 FileLog ./log/CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01-%Y.log CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 logtype text&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 room CUL_HM&lt;br /&gt;
define CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 CUL_HM 1F1xxx02&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 model HM-PB-2-WM55&lt;br /&gt;
attr CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 room CUL_HM&lt;br /&gt;
define FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 FileLog ./log/CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02-%Y.log CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 logtype text&lt;br /&gt;
attr FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 room CUL_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bearbeiten ===&lt;br /&gt;
Das ist der Standardeintrag, den fhem automatisch erstellt. Es macht aber Sinn, einiges zu verändern.&lt;br /&gt;
Zum einen sollten die Entities umbenannt werden, um sie besser finden und somit bedienen zu können. Das geht entweder manuell in der fhem.cfg (suche &amp;quot;CUL_HM_HM_PB_2_WM55_1F1xxx&amp;quot; ersetze mit neuem Begriff) oder besser per Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename CUL_HM_HM_PB_2_WM55_1F1xxx LichtFlurDev&lt;br /&gt;
rename CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 LichtFlur1&lt;br /&gt;
rename CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 LichtFlur2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch ist es nicht sinnvoll, für jede Entity (in diesem Fall 3: Schalter und die beiden Knöpfe) je ein eigenes Logfile anzulegen, auch wenn autocreate das so macht, denn das kostet Performance und Übersichtlichkeit. Das Beispiel unten zeigt, wie die Ereignisse aller drei Entities mitgeschrieben werden - achtet auf das .* am Ende:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define FileLog_LichtFlur FileLog ./log/LichtFlur-%Y.log LichtFlur.*&lt;br /&gt;
attr FileLog_LichtFlur logtype text&lt;br /&gt;
attr FileLog_LichtFlur room CUL_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und jetzt natürlich noch aufräumen und die alten Logfiles entsorgen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx&lt;br /&gt;
delete FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01&lt;br /&gt;
delete FileLog_CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Folgende Attribute solltet ihr &#039;&#039;&#039;nicht aendern&#039;&#039;&#039;: .devInfo, .stc, model, firmware, serialNr, subType&lt;br /&gt;
&lt;br /&gt;
Weitere interessante Attribute, die man nutzen sollte (siehe auch commandref)sind:room, group, expert, webCmd: gruppieren und darstellen auf der webseite, autoRegRead: automatisches Lesen der Register (für push-Button sollte es auf 0 stehen)&lt;br /&gt;
&lt;br /&gt;
Letztendlich könnte die &amp;quot;gepflegte&amp;quot; fhem.cfg so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#====== Das Device&lt;br /&gt;
define LichtFlurDev CUL_HM 1F1xxx&lt;br /&gt;
attr LichtFlurDev .devInfo 020000&lt;br /&gt;
attr LichtFlurDev .stc 40&lt;br /&gt;
attr LichtFlurDev firmware 1.1&lt;br /&gt;
attr LichtFlurDev model HM-PB-2-WM55&lt;br /&gt;
attr LichtFlurDev serialNr KEQ003xxx&lt;br /&gt;
attr LichtFlurDev subType pushButton&lt;br /&gt;
#--- user Attribute zum Device&lt;br /&gt;
attr LichtFlurDev room Flur,Device,Licht&lt;br /&gt;
attr LichtFlurDev group Schalter&lt;br /&gt;
attr LichtFlurDev webCmd statusRequest:getConfig&lt;br /&gt;
attr LichtFlurDev expert 1&lt;br /&gt;
attr LichtFlurDev autoRegRead 0&lt;br /&gt;
#--- erste Taste&lt;br /&gt;
define LichtFlur1 CUL_HM 1F1xxx01&lt;br /&gt;
attr LichtFlur1 model HM-PB-2-WM55&lt;br /&gt;
attr LichtFlur1 room Flur,Button,Licht&lt;br /&gt;
attr LichtFlur1 group Schalter&lt;br /&gt;
#--- zweite Taste&lt;br /&gt;
define LichtFlur2 CUL_HM 1F1xxx02&lt;br /&gt;
attr LichtFlur2 model HM-PB-2-WM55&lt;br /&gt;
attr LichtFlur2 room Flur,Button,Licht&lt;br /&gt;
attr LichtFlur2 group Schalter&lt;br /&gt;
&lt;br /&gt;
define FileLog_LichtFlur FileLog ./log/LichtFlur-%Y.log LichtFlur.*&lt;br /&gt;
attr FileLog_LichtFlur logtype text&lt;br /&gt;
attr FileLog_LichtFlur room logfiles&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit virtuellem Aktor verbinden ===&lt;br /&gt;
Wenn man den Taster nicht direkt mit einem Aktor verbindet, erhält er keine Rückmeldungen, wird also immer orange und rot blinken, wenn ihr einen Befehl absetzt. Dieser wird zwar von fhem verarbeitet, fhem weiß aber nicht, dass es etwas zurückmelden soll. Daher solltet ihr Euch einen virtuellen Aktor anlegen und den Taster dann mit diesem verbinden:&lt;br /&gt;
&lt;br /&gt;
In der FHEM-Web Oberfläche gebt ihr in der Kommandozeile ein (die hmId kann freigewählt werden, darf aber in echt nicht existieren):&lt;br /&gt;
 define virtueller_Aktor CUL_HM 123456&lt;br /&gt;
sowie:&lt;br /&gt;
 set virtueller_Aktor virtual 2&lt;br /&gt;
&lt;br /&gt;
Jetzt habt ihr einen Virtuellen Aktor mit einem Kanal erstellt, jetzt gilt es noch das ganze mit dem realen Taster zu verbinden. Verbunden werden zuerst die Kanäle und dann wird die ganze Konfiguration am Taster gespeichert:&lt;br /&gt;
&lt;br /&gt;
 set LichtFlur1 peerChan 0 virtueller_Aktor_Btn1 single set&lt;br /&gt;
 set LichtFlur2 peerChan 0 virtueller_Aktor_Btn2 single set&lt;br /&gt;
 set LichtFlurDev getConfig  &lt;br /&gt;
&lt;br /&gt;
und am Taster einmal anlernen drücken, ggf. nochmal ein &amp;lt;code&amp;gt;set LichtFlurDev getConfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun drückt einmal einen Button eures Tasters. Wenn alles geklappt hatte, sollte bei Euren Kanälen im State ein (to virtueller_Aktor_Btn1) dahinter stehen und unter den Attributen etwas in den peerIDs auftauchen. Diesen virtuellen Aktor kann man übrigens als Gegenpart für beliebig viele Taster nehmen, ihr braucht also nicht für jeden Taster einen virtuellen Aktor erstellen. Um den virtuellen Aktor zu erweitern einfach ein &amp;lt;code&amp;gt;set virtueller_Aktor virtual &amp;lt;i&amp;gt;[Gesamtanzahl aller Kanäle]&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt; ausführen, schon habt ihr weitere Kanäle die ihr mit euren echten Tastern peeren könnt.&lt;br /&gt;
&lt;br /&gt;
Am Ende umbedingt einmal &amp;quot;Save config&amp;quot; drücken, damit der virtuelle Aktor in der fhem.cfg abgespeichert wird.&lt;br /&gt;
&lt;br /&gt;
=== Mit Rolladenaktor verbinden (peeren) ===&lt;br /&gt;
&lt;br /&gt;
Der HM-PB-2-WM55 kann auch z.B. direkt mit einem [[HM-LC-BL1-FM_Funk-Jalousieaktor|HM-LC-BL1-FM Rollladenaktor]] gepeert werden. Hierdurch lässt er sich ohne Fhem nutzen. Weitere Infos dazu finden Sie [[HM-LC-BL1-FM_Funk-Jalousieaktor#Peeren_mit_einem_HM-PB-2-WM55|hier]].&lt;br /&gt;
&lt;br /&gt;
== Integration in bestehende Markenschalterprogramme ==&lt;br /&gt;
&lt;br /&gt;
Obwohl der HM-PB-2-WM55, im Gegensatz zu den Funk-Schaltaktoren für Markenschalter (HM-LC-Sw1PBU-FM, HM-LC-Dim1TPBU-FM und HM-LC-Bl1PBU-FM), eigentlich nicht für die Integration in bestehende Markenschalterprogramme geeignet ist, kann man ihn mit etwas Bastelaufwand doch optisch zumindest etwas integrieren.&lt;br /&gt;
&lt;br /&gt;
=== Jung CD 500 ===&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe einer im 3D Drucker selbst gedruckten Adapterplatte und etwas dremeln lässt sich der HM-PB-2-WM55 recht gut in die Jung CD 500 Serie integrieren. Eine bebilderte Anleitung ist [http://www.instructables.com/id/HomeMatic-Wandschalter-mit-Jung-CD500-Blenden hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== Bausatz: Der Taster lässt sich nicht anlernen / rotes Dauerblinken ===&lt;br /&gt;
Dann stimmt vermutlich etwas mit der Lötung nicht. Am besten insbesondere die Lötungen des Funkmoduls (8 auf jeder Seite überprüfen).&lt;br /&gt;
Am besten mal in der fhem.cfg &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr LANInterface loglevel 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
eintragen und dann die Logdatei anschauen, was dort für Funkverkehr aufgezeichnet wird. Euren Schalter könnt ihr identifizieren, indem ihr den kleineren QR-code auf der Platine des Schalters z.B. mit einem Android Handy und Barcoo auslest. Die App zeigt Euch dann den sechsstelligen Gerätecode an (wenn der Code siebenstellig erscheint, dann die erste Ziffer / Buchtstaben weglassen), den ihr in der Logdatei suchen könnt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Anleitung: [http://www.elv-downloads.de/Assets/Produkte/10/1030/103076/Downloads/103076_HM_PB_2_WM55_UM.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Integration in Jung CD 500 Schalterprogramm: [http://www.instructables.com/id/HomeMatic-Wandschalter-mit-Jung-CD500-Blenden Instructable]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Sender)]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:HomeMatic_Type_Thermostat&amp;diff=10056</id>
		<title>Diskussion:HomeMatic Type Thermostat</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:HomeMatic_Type_Thermostat&amp;diff=10056"/>
		<updated>2015-02-13T12:59:20Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Die Seite wurde neu angelegt: „Das Format der Temperaturlisten für HM-CC-RT-DN und HM-TC-IT-WM-W-EU unterscheiden sich meines Wissens in den Namen der Tagesprogramme. Das geht aus fdem Arti…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Format der Temperaturlisten für HM-CC-RT-DN und HM-TC-IT-WM-W-EU unterscheiden sich meines Wissens in den Namen der Tagesprogramme. Das geht aus fdem Artikel nicht hervor.&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Kategorie_Diskussion:Hardware_Typen&amp;diff=9705</id>
		<title>Kategorie Diskussion:Hardware Typen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Kategorie_Diskussion:Hardware_Typen&amp;diff=9705"/>
		<updated>2015-01-31T08:25:29Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Konsolidierung der Seiten &amp;quot;HomeMatic Type xxx&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Konsolidierung der Seiten &amp;quot;HomeMatic Type xxx&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Also ich hatte die Idee von [[Benutzer Diskussion:Strauch|&amp;quot;Strauch&amp;quot;]] nicht als Konkurenz oder Ergänzung zu der allgemeinen Kategorie Hardware Type verstanden. Ich sehe sie als einen Versuch, &#039;&#039;&#039;HomeMatic-spezifische&#039;&#039;&#039; Informationen, die zur Zeit über die Seiten mehrerer Hardware Devices verstreut sind, die aber eine ganze Kategorie von HomeMatic Devices betreffen, an einer zentralen stelle zu sammeln. Damit kann vermieden werden, das z.B. Wiki-Updates, die den Umgang mit Temperatur Templates betreffen, im Artikel für jeden Heizungs- und Wandthermostat separat nachgetragen werden müssen (oder eben auch nicht passieren). Durch das sammeln solcher Teile in einem Typen- und HomeMatic-spezifischen Artikel kann dann von den Devices nur noch auf den Artikel verwiesen werden und wenn sich dann was ändert oder besser dokumentiert wird, profitieren alle Artikel davon.&lt;br /&gt;
(--[[Benutzer:Reibuehl|Reibuehl]] ([[Benutzer Diskussion:Reibuehl|Diskussion]]) 08:23, 31. Jan. 2015 (UTC))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Thema &amp;quot;HomeMatic Type xxx&amp;quot;, die im Prinzip etwas ähnliches wie die Unterkategorien zu Hardware Typen dargestellt haben, gab es einen Mail-Austausch, den ich zur allgemeinen weiteren Diskussion hierher kopiere: (--[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 18:47, 30. Jan. 2015 (UTC))&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;ich habe die Einrichtung der &amp;quot;HomeMatic Type...&amp;quot;-Seiten in den letzten Wochen/Monaten schon bemerkt ... und nicht wirklich verstanden, was das letztendliche Ziel ist. Es beruhigt mich, dass Du selbst Zweifel daran bekommst, ob das der richtige Ansatz ist - ich fand ihn nämlich nicht sinnvoll, nicht zuletzt, weil er nicht sauber in das Fhem-Wiki interiert werden kann und irgendwie für mich auch generell nicht zum Wiki-Konzept passt.&#039;&#039;&lt;br /&gt;
:&#039;&#039;Ich würde vorschlagen, auf diese neuen/HM-spezifischen Typen zu verzichten und stattdessen die Geräte in die bestehenden Unterkategorien von &#039;&#039;&#039;[[:Kategorie:Hardware Typen|Hardware Typen]]&#039;&#039;&#039; einzusortieren. Das ist auch jetzt schon möglich und wird für viele andere (auch HomeMatic) Geräte so gemacht.&#039;&#039;&lt;br /&gt;
:&#039;&#039;Die Problematik des aktuellen &amp;quot;HomeMatic Type-&amp;quot;Konzepts kannst Du allein daran erkennen, dass sie nicht sauber untereinander verlinkt sind - eine Sache, die bei Verwendung der Kategorien automatisch funktioniert.&#039;&#039;&lt;br /&gt;
:&#039;&#039;Sollten einzelne HomeMatic Geräte überhaupt nicht in eine der bestehenden Hardware-Typen einzuordnen sein, besteht ja immer noch die Möglichkeit, eine neue Unterkategorie anzulegen - bisher sehe ich die Notwendigkeit noch nicht. Wenn es HomeMatic-spezifische Unterschiede oder Besonderheiten gibt, die sich am Gerätetyp festmachen lassen, würde ich das eher auf einer eigenen Seite (für alle Typen) beschreiben. Diese eine Seite sollte über die HomeMatic Hauptseite (deren Struktur meiner Ansicht nach auch dringend überarbeitet werden müsste) im richtigen Kontext erreichbar sein.&#039;&#039;&lt;br /&gt;
:&#039;&#039;Wir können - und sollten - das gern weiterdiskutieren bevor Du viel weiteren Aufwand in die Seiten steckst. Mein Vorschlag: wenn Du damit einverstanden bist, dann leg doch eine Seite &amp;quot;HomeMatic Hardware Typen - Besonderheiten&amp;quot; (oder ähnlich) an. Hier aber nur die grobe Struktur. Auf der Diskussionsseite zu dieser Seite (oder, falls Dir das lieber ist, auf Deiner Diskussionsseite) sollte dieser Mailthread als Start der Diskussion über das Gesamtkonzept stehen. Dann können auch andere Fhem-Wiki-Benutzer (Krikan war in den letzten Monaten auch recht engagiert, was die Wiki-Struktur und Kategorien angeht, ebenso Tupol vor längerer Zeit) ihre Ideen und Vorschläge einbringen. Ich denke, dann kann das eine runde, verständliche und komplette Sache werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ursprüngliche Mail (von [[Benutzer Diskussion:Strauch|&amp;quot;Strauch&amp;quot;]]) war:&lt;br /&gt;
:&#039;&#039;ich baue gerade am Fhemwiki im Bereich Homematic um. Ich hatte mit Martin irgendwann mal besprochen. Das wir die Gerätegruppen wie Thermostat, Remote, Threestate als Einzelseiten anlegen und dort die Informationen hinterlegen die für alle Geräte dieser Kartegorie zutreffen. Nun glaube ich würde es Sinn machen die entsprechenden Artikel als Subkategorie in Homematic anzulegen. Wie siehst du das? Wenn ja kannst du das entsprechend einrichten?&#039;&#039;&lt;br /&gt;
:&#039;&#039;Hier die vorhanden HomematicTyp Artikel (ich muss noch ein paar hinzufügen):&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type Blind&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type Dimmer&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type MotionDetector&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type PushButton&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type Remote&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type Switch&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type Thermostat&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type ThreeState&#039;&#039;&lt;br /&gt;
::*&#039;&#039;HomeMatic Type THSensor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Beim ThermostatTyp bin ich am weitesten: [[HomeMatic Type Thermostat]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung(sversuch) HomeMatic Type zu &amp;quot;Hardware Typen&amp;quot;-Unterkategorie ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Typen !! HomeMatic Type !! Bemerkungen / Kommentare&lt;br /&gt;
|-&lt;br /&gt;
| Rollladensteuerung                || HomeMatic Type Blind          || ...   &lt;br /&gt;
|-&lt;br /&gt;
| Dimmer                            || HomeMatic Type Dimmer         || ...   &lt;br /&gt;
|-&lt;br /&gt;
| Bewegungs- und Anwesenheitsmelder || HomeMatic Type MotionDetector || ...   &lt;br /&gt;
|-&lt;br /&gt;
| ???                               || HomeMatic Type PushButton     || ...   &lt;br /&gt;
|-&lt;br /&gt;
| Schalter (Sender)                 || HomeMatic Type Remote         || ...   &lt;br /&gt;
|-&lt;br /&gt;
| Schalter (Empfänger)              || HomeMatic Type Switch         || ...   &lt;br /&gt;
|-&lt;br /&gt;
| Heizungssteuerung                 || HomeMatic Type Thermostat     || Es gibt auch noch Kategorie Heizungsventile&lt;br /&gt;
|-&lt;br /&gt;
| ???                               || HomeMatic Type ThreeState     || Wofür wird dieser Typ benötigt? Ist er relevant für Endanwender?&lt;br /&gt;
|-&lt;br /&gt;
| Temperatursensoren / Feuchtesensoren || HomeMatic Type THSensor    || ...   &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ich denke, es ergibt sich schon eine fast vollständige Abdeckung. Es sollte geprüft werden, ob die Information, die derzeit auf einer &amp;quot;HomeMatic Type xxx&amp;quot; Seite steht - falls überhaupt erforderlich - auf die (Unter-)Kategorieseite passen würde. Mit einem HomeMatic-spezifischen Kommentar nur da wo er wirklich nötig ist.&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&amp;diff=9704</id>
		<title>HM-Sec-SCo Tür-Fensterkontakt, optisch</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&amp;diff=9704"/>
		<updated>2015-01-31T08:01:50Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-SEC-SCo.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Tür-Fensterkontakt, optisch&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=1,5 V DC&lt;br /&gt;
|HWPowerConsumption=max. 100 mA&lt;br /&gt;
|HWPoweredBy=Batterie (1x 1,5V LR03/Micro/AAA)&lt;br /&gt;
|HWSize=15x100x18mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
Wird mit aktiviertem AES ausgeliefert und kann nur mit Gateways die AES unterstützen gepaired werden (HM-LAN-CFG und HM-USB-CFG).&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&amp;diff=9703</id>
		<title>HM-Sec-SCo Tür-Fensterkontakt, optisch</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sec-SCo_T%C3%BCr-Fensterkontakt,_optisch&amp;diff=9703"/>
		<updated>2015-01-31T08:01:17Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Infobox hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-SEC-SCo.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Tür-Fensterkontakt, optisch&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=1,5 V DC&lt;br /&gt;
|HWPowerConsumption=max. 100 mA&lt;br /&gt;
|HWPoweredBy=Batterie (1x 1,5V LR03/Micro/AAA)&lt;br /&gt;
|HWSize=15x100x18mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Homematic Funk-Tür-Fensterkontakt, optisch&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
Wird mit aktiviertem AES ausgeliefert und kann nur mit Gateways die AES unterstützen gepaired werden (HM-LAN-CFG und HM-USB-CFG).&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9187</id>
		<title>HM-OU-LED16 Funk-Statusanzeige LED16</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9187"/>
		<updated>2015-01-05T10:09:51Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* fhem.log Auszug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-OU-LED16.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Statusanzeige LED16&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=16 (3 Tasten, Hoch, Runter und Enter)&lt;br /&gt;
|HWVoltage=7,5 V DC (über mitgeliefertes Steckernetzteil&lt;br /&gt;
|HWPowerConsumption=max. 250 mA&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=100x100x15mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
Anzeige von 16 Statuswerten über rot/grün/orange LED&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED&#039;s (je 1xGrün und 1xRot -&amp;gt; Rot+Grün=Orange) diverse Stati anzeigen.&lt;br /&gt;
Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden.&lt;br /&gt;
Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED&#039;s angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Inbetriebnahme und Installation =&lt;br /&gt;
&lt;br /&gt;
Die Funk-Statusanzeige kann nicht direkt gepeered werden sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM.&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Probleme =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ggfls. ergänzen&amp;gt;&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
== event Monitor ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.log Auszug ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2014.12.31 16:01:11 3: CUL_HM set OG_Statusdisplay_Led_01 led red&lt;br /&gt;
2014.12.31 16:02:37 3: CUL_HM set OG_Statusdisplay_Led_01 led off&lt;br /&gt;
2014.12.31 16:03:46 3: CUL_HM set OG_Statusdisplay_Led_01 led green&lt;br /&gt;
2014.12.31 16:06:39 3: CUL_HM set OG_Statusdisplay_Led_01 led off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define OG_Statusdisplay CUL_HM 1EAB54&lt;br /&gt;
attr OG_Statusdisplay IODev HMLAN1&lt;br /&gt;
attr OG_Statusdisplay autoReadReg 4_reqStatus&lt;br /&gt;
attr OG_Statusdisplay expert 2_full&lt;br /&gt;
attr OG_Statusdisplay firmware 1.1&lt;br /&gt;
attr OG_Statusdisplay model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay room Wohnzimmer&lt;br /&gt;
attr OG_Statusdisplay serialNr JEQxxxxxxx&lt;br /&gt;
attr OG_Statusdisplay subType outputUnit&lt;br /&gt;
attr OG_Statusdisplay webCmd getConfig:clear msgEvents&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_01 CUL_HM 1EAB5401&lt;br /&gt;
attr OG_Statusdisplay_Led_01 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_01 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_02 CUL_HM 1EAB5402&lt;br /&gt;
attr OG_Statusdisplay_Led_02 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_02 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_03 CUL_HM 1EAB5403&lt;br /&gt;
attr OG_Statusdisplay_Led_03 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_03 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_04 CUL_HM 1EAB5404&lt;br /&gt;
attr OG_Statusdisplay_Led_04 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_04 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_05 CUL_HM 1EAB5405&lt;br /&gt;
attr OG_Statusdisplay_Led_05 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_05 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_06 CUL_HM 1EAB5406&lt;br /&gt;
attr OG_Statusdisplay_Led_06 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_06 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_07 CUL_HM 1EAB5407&lt;br /&gt;
attr OG_Statusdisplay_Led_07 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_07 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_08 CUL_HM 1EAB5408&lt;br /&gt;
attr OG_Statusdisplay_Led_08 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_08 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_09 CUL_HM 1EAB5409&lt;br /&gt;
attr OG_Statusdisplay_Led_09 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_09 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_10 CUL_HM 1EAB540A&lt;br /&gt;
attr OG_Statusdisplay_Led_10 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_10 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_11 CUL_HM 1EAB540B&lt;br /&gt;
attr OG_Statusdisplay_Led_11 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_11 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_12 CUL_HM 1EAB540C&lt;br /&gt;
attr OG_Statusdisplay_Led_12 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_12 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_13 CUL_HM 1EAB540D&lt;br /&gt;
attr OG_Statusdisplay_Led_13 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_13 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_14 CUL_HM 1EAB540E&lt;br /&gt;
attr OG_Statusdisplay_Led_14 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_14 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_15 CUL_HM 1EAB540F&lt;br /&gt;
attr OG_Statusdisplay_Led_15 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_15 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_16 CUL_HM 1EAB5410&lt;br /&gt;
attr OG_Statusdisplay_Led_16 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_16 peerIDs 00000000,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* Anleitung: [http://www.eq-3.de/Downloads/eq3/pdf_produkte/103206_HM-OU-LED16_UM_GE_V1.3_20120815.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schalter (Sender)]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9186</id>
		<title>HM-OU-LED16 Funk-Statusanzeige LED16</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9186"/>
		<updated>2015-01-05T09:19:09Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* fhem.cfg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-OU-LED16.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Statusanzeige LED16&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=16 (3 Tasten, Hoch, Runter und Enter)&lt;br /&gt;
|HWVoltage=7,5 V DC (über mitgeliefertes Steckernetzteil&lt;br /&gt;
|HWPowerConsumption=max. 250 mA&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=100x100x15mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
Anzeige von 16 Statuswerten über rot/grün/orange LED&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED&#039;s (je 1xGrün und 1xRot -&amp;gt; Rot+Grün=Orange) diverse Stati anzeigen.&lt;br /&gt;
Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden.&lt;br /&gt;
Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED&#039;s angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Inbetriebnahme und Installation =&lt;br /&gt;
&lt;br /&gt;
Die Funk-Statusanzeige kann nicht direkt gepeered werden sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM.&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Probleme =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ggfls. ergänzen&amp;gt;&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
== event Monitor ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.log Auszug ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define OG_Statusdisplay CUL_HM 1EAB54&lt;br /&gt;
attr OG_Statusdisplay IODev HMLAN1&lt;br /&gt;
attr OG_Statusdisplay autoReadReg 4_reqStatus&lt;br /&gt;
attr OG_Statusdisplay expert 2_full&lt;br /&gt;
attr OG_Statusdisplay firmware 1.1&lt;br /&gt;
attr OG_Statusdisplay model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay room Wohnzimmer&lt;br /&gt;
attr OG_Statusdisplay serialNr JEQxxxxxxx&lt;br /&gt;
attr OG_Statusdisplay subType outputUnit&lt;br /&gt;
attr OG_Statusdisplay webCmd getConfig:clear msgEvents&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_01 CUL_HM 1EAB5401&lt;br /&gt;
attr OG_Statusdisplay_Led_01 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_01 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_02 CUL_HM 1EAB5402&lt;br /&gt;
attr OG_Statusdisplay_Led_02 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_02 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_03 CUL_HM 1EAB5403&lt;br /&gt;
attr OG_Statusdisplay_Led_03 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_03 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_04 CUL_HM 1EAB5404&lt;br /&gt;
attr OG_Statusdisplay_Led_04 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_04 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_05 CUL_HM 1EAB5405&lt;br /&gt;
attr OG_Statusdisplay_Led_05 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_05 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_06 CUL_HM 1EAB5406&lt;br /&gt;
attr OG_Statusdisplay_Led_06 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_06 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_07 CUL_HM 1EAB5407&lt;br /&gt;
attr OG_Statusdisplay_Led_07 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_07 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_08 CUL_HM 1EAB5408&lt;br /&gt;
attr OG_Statusdisplay_Led_08 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_08 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_09 CUL_HM 1EAB5409&lt;br /&gt;
attr OG_Statusdisplay_Led_09 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_09 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_10 CUL_HM 1EAB540A&lt;br /&gt;
attr OG_Statusdisplay_Led_10 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_10 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_11 CUL_HM 1EAB540B&lt;br /&gt;
attr OG_Statusdisplay_Led_11 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_11 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_12 CUL_HM 1EAB540C&lt;br /&gt;
attr OG_Statusdisplay_Led_12 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_12 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_13 CUL_HM 1EAB540D&lt;br /&gt;
attr OG_Statusdisplay_Led_13 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_13 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_14 CUL_HM 1EAB540E&lt;br /&gt;
attr OG_Statusdisplay_Led_14 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_14 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_15 CUL_HM 1EAB540F&lt;br /&gt;
attr OG_Statusdisplay_Led_15 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_15 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_16 CUL_HM 1EAB5410&lt;br /&gt;
attr OG_Statusdisplay_Led_16 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_16 peerIDs 00000000,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* Anleitung: [http://www.eq-3.de/Downloads/eq3/pdf_produkte/103206_HM-OU-LED16_UM_GE_V1.3_20120815.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schalter (Sender)]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9185</id>
		<title>HM-OU-LED16 Funk-Statusanzeige LED16</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9185"/>
		<updated>2015-01-05T09:16:59Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: fhem.cfg Auszug hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-OU-LED16.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Statusanzeige LED16&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=16 (3 Tasten, Hoch, Runter und Enter)&lt;br /&gt;
|HWVoltage=7,5 V DC (über mitgeliefertes Steckernetzteil&lt;br /&gt;
|HWPowerConsumption=max. 250 mA&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=100x100x15mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
Anzeige von 16 Statuswerten über rot/grün/orange LED&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED&#039;s (je 1xGrün und 1xRot -&amp;gt; Rot+Grün=Orange) diverse Stati anzeigen.&lt;br /&gt;
Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden.&lt;br /&gt;
Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED&#039;s angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Inbetriebnahme und Installation =&lt;br /&gt;
&lt;br /&gt;
Die Funk-Statusanzeige kann nicht direkt gepeered werden sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM.&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Probleme =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ggfls. ergänzen&amp;gt;&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
== event Monitor ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.log Auszug ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay CUL_HM 1EAB54&lt;br /&gt;
attr OG_Statusdisplay IODev HMLAN1&lt;br /&gt;
attr OG_Statusdisplay autoReadReg 4_reqStatus&lt;br /&gt;
attr OG_Statusdisplay expert 2_full&lt;br /&gt;
attr OG_Statusdisplay firmware 1.1&lt;br /&gt;
attr OG_Statusdisplay model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay room Wohnzimmer&lt;br /&gt;
attr OG_Statusdisplay serialNr JEQxxxxxxx&lt;br /&gt;
attr OG_Statusdisplay subType outputUnit&lt;br /&gt;
attr OG_Statusdisplay webCmd getConfig:clear msgEvents&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_01 CUL_HM 1EAB5401&lt;br /&gt;
attr OG_Statusdisplay_Led_01 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_01 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_02 CUL_HM 1EAB5402&lt;br /&gt;
attr OG_Statusdisplay_Led_02 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_02 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_03 CUL_HM 1EAB5403&lt;br /&gt;
attr OG_Statusdisplay_Led_03 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_03 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_04 CUL_HM 1EAB5404&lt;br /&gt;
attr OG_Statusdisplay_Led_04 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_04 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_05 CUL_HM 1EAB5405&lt;br /&gt;
attr OG_Statusdisplay_Led_05 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_05 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_06 CUL_HM 1EAB5406&lt;br /&gt;
attr OG_Statusdisplay_Led_06 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_06 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_07 CUL_HM 1EAB5407&lt;br /&gt;
attr OG_Statusdisplay_Led_07 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_07 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_08 CUL_HM 1EAB5408&lt;br /&gt;
attr OG_Statusdisplay_Led_08 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_08 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_09 CUL_HM 1EAB5409&lt;br /&gt;
attr OG_Statusdisplay_Led_09 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_09 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_10 CUL_HM 1EAB540A&lt;br /&gt;
attr OG_Statusdisplay_Led_10 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_10 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_11 CUL_HM 1EAB540B&lt;br /&gt;
attr OG_Statusdisplay_Led_11 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_11 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_12 CUL_HM 1EAB540C&lt;br /&gt;
attr OG_Statusdisplay_Led_12 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_12 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_13 CUL_HM 1EAB540D&lt;br /&gt;
attr OG_Statusdisplay_Led_13 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_13 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_14 CUL_HM 1EAB540E&lt;br /&gt;
attr OG_Statusdisplay_Led_14 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_14 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_15 CUL_HM 1EAB540F&lt;br /&gt;
attr OG_Statusdisplay_Led_15 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_15 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
define OG_Statusdisplay_Led_16 CUL_HM 1EAB5410&lt;br /&gt;
attr OG_Statusdisplay_Led_16 model HM-OU-LED16&lt;br /&gt;
attr OG_Statusdisplay_Led_16 peerIDs 00000000,&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* Anleitung: [http://www.eq-3.de/Downloads/eq3/pdf_produkte/103206_HM-OU-LED16_UM_GE_V1.3_20120815.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schalter (Sender)]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:HM-OU-LED16.jpg&amp;diff=9184</id>
		<title>Datei:HM-OU-LED16.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:HM-OU-LED16.jpg&amp;diff=9184"/>
		<updated>2015-01-05T09:12:09Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9183</id>
		<title>HM-OU-LED16 Funk-Statusanzeige LED16</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-OU-LED16_Funk-Statusanzeige_LED16&amp;diff=9183"/>
		<updated>2015-01-05T09:06:56Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Infobox hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-OU-LED16.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Statusanzeige LED16&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=16 (3 Tasten, Hoch, Runter und Enter)&lt;br /&gt;
|HWVoltage=7,5 V DC (über mitgeliefertes Steckernetzteil&lt;br /&gt;
|HWPowerConsumption=max. 250 mA&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=100x100x15mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
Anzeige von 16 Statuswerten über rot/grün/orange LED&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED&#039;s (je 1xGrün und 1xRot -&amp;gt; Rot+Grün=Orange) diverse Stati anzeigen.&lt;br /&gt;
Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden.&lt;br /&gt;
Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED&#039;s angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Inbetriebnahme und Installation =&lt;br /&gt;
&lt;br /&gt;
Die Funk-Statusanzeige kann nicht direkt gepeered werden sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM.&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Probleme =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ggfls. ergänzen&amp;gt;&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
== event Monitor ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.log Auszug ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
== fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Bitte ergänzen&amp;gt;&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* Anleitung: [http://www.eq-3.de/Downloads/eq3/pdf_produkte/103206_HM-OU-LED16_UM_GE_V1.3_20120815.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schalter (Sender)]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6671</id>
		<title>HomeMatic Nachrichten sniffen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6671"/>
		<updated>2014-06-28T22:04:29Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um Probleme besser zu verstehen und Support zu ermöglichen kann man Roh-Nachrichten sniffen. Meist ist es sinnvoll andere Logs zu dieser Zeit zu reduzieren und genauere Zeitstempel zu erzeugen. &lt;br /&gt;
&lt;br /&gt;
Die Nachrichten landen im Logfile.&lt;br /&gt;
 &lt;br /&gt;
Nach dem Loggen sollte wieder in den normal-mode zurückgeschaltet werden um ein Anwachsen des Logfiles zu reduzieren. Dazu kann an die Attribute einfach löschen. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Falls die Attribute in die fhem.cfg gesetzt/gelöscht werden, sind diese erst nach einem rereadcfg oder shutdown restart aktiv. Bei Eingabe über die Konsole oder über das Web Interface werden die Parameter sofort übernommen.&lt;br /&gt;
&lt;br /&gt;
====HMLAN/HMUSB====&lt;br /&gt;
&lt;br /&gt;
 attr global verbose 1&lt;br /&gt;
 attr global mseclog 1&lt;br /&gt;
 attr &amp;lt;hmlan&amp;gt; logIDs all,sys&lt;br /&gt;
logIDs erlaubt das selektive loggen einzelner HM-Komponenten, was die Log-Größe erheblich reduzieren kann uns somit auch sehr lange Aufzeichnungen zulässt. Siehe auch &amp;lt;u&amp;gt;[[HM-CFG-LAN_LAN_Konfigurations-Adapter#Attribute|logIDs]]&amp;lt;/u&amp;gt;&lt;br /&gt;
====CUL/CUNO====&lt;br /&gt;
  attr global verbose 1&lt;br /&gt;
  attr global mseclog 1&lt;br /&gt;
  attr &amp;lt;cul&amp;gt; verbose 4&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Quelle: [http://forum.fhem.de/index.php/topic,16563.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6670</id>
		<title>HomeMatic Nachrichten sniffen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6670"/>
		<updated>2014-06-28T22:02:50Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um Probleme besser zu verstehen und Support zu ermöglichen kann man Roh-Nachrichten sniffen. Meist ist es sinnvoll andere Logs zu dieser Zeit zu reduzieren und genauere Zeitstempel zu erzeugen. &lt;br /&gt;
&lt;br /&gt;
Die Nachrichten landen im Logfile.&lt;br /&gt;
 &lt;br /&gt;
Nach dem Loggen sollte wieder in den normal-mode zurückgeschaltet werden um ein Anwachsen des Logfiles zu reduzieren. Dazu kann an die Attribute einfach löschen. &lt;br /&gt;
&lt;br /&gt;
Falls die Attribute in die fhem.cfg geschrieben werden, sind diese erst nach einem rereadcfg oder shutdown restart aktiv. Bei Eingabe mit der Console oder übers Web Interface werden die Parameter sofort übernommen.&lt;br /&gt;
&lt;br /&gt;
====HMLAN/HMUSB====&lt;br /&gt;
&lt;br /&gt;
 attr global verbose 1&lt;br /&gt;
 attr global mseclog 1&lt;br /&gt;
 attr &amp;lt;hmlan&amp;gt; logIDs all,sys&lt;br /&gt;
logIDs erlaubt das selektive loggen einzelner HM-Komponenten, was die Log-Größe erheblich reduzieren kann uns somit auch sehr lange Aufzeichnungen zulässt. Siehe auch &amp;lt;u&amp;gt;[[HM-CFG-LAN_LAN_Konfigurations-Adapter#Attribute|logIDs]]&amp;lt;/u&amp;gt;&lt;br /&gt;
====CUL/CUNO====&lt;br /&gt;
  attr global verbose 1&lt;br /&gt;
  attr global mseclog 1&lt;br /&gt;
  attr &amp;lt;cul&amp;gt; verbose 4&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Quelle: [http://forum.fhem.de/index.php/topic,16563.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6669</id>
		<title>HomeMatic Nachrichten sniffen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Nachrichten_sniffen&amp;diff=6669"/>
		<updated>2014-06-28T21:51:47Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um Probleme besser zu verstehen und Support zu ermöglichen kann man Roh-Nachrichten sniffen. Meist ist es sinnvoll andere Logs zu dieser Zeit zu reduzieren und genauere Zeitstempel zu erzeugen. &lt;br /&gt;
&lt;br /&gt;
Die Nachrichten landen nach einem rereadcfg oder shutdown restart im Logfile.&lt;br /&gt;
 &lt;br /&gt;
Nach dem Loggen sollte wieder in den normal-mode zurückgeschaltet werden um ein Anwachsen des Logfiles zu reduzieren. Dazu kann an die Attribute einfach löschen. &lt;br /&gt;
&lt;br /&gt;
====HMLAN/HMUSB====&lt;br /&gt;
&lt;br /&gt;
 attr global verbose 1&lt;br /&gt;
 attr global mseclog 1&lt;br /&gt;
 attr &amp;lt;hmlan&amp;gt; logIDs all,sys&lt;br /&gt;
logIDs erlaubt das selektive loggen einzelner HM-Komponenten, was die Log-Größe erheblich reduzieren kann uns somit auch sehr lange Aufzeichnungen zulässt. Siehe auch &amp;lt;u&amp;gt;[[HM-CFG-LAN_LAN_Konfigurations-Adapter#Attribute|logIDs]]&amp;lt;/u&amp;gt;&lt;br /&gt;
====CUL/CUNO====&lt;br /&gt;
  attr global verbose 1&lt;br /&gt;
  attr global mseclog 1&lt;br /&gt;
  attr &amp;lt;cul&amp;gt; verbose 4&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Quelle: [http://forum.fhem.de/index.php/topic,16563.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5118</id>
		<title>HM-CC-RT-DN Funk-Heizkörperthermostat</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5118"/>
		<updated>2014-02-25T14:40:51Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Firmware Update beschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; handelt es sich um einen &#039;&#039;&#039;Funk-Heizkörperthermostaten&#039;&#039;&#039;, der als Nachfolger den [[HM-CC-VD]] ablöst und seit Mitte September 2013 verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
== Vorbemerkungen ==&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Vorgänger misst der HM-CC-RT-DN selbst die Temperatur und verfügt über eine Boost-Funktion. Er braucht zur Steuerung kein separates Raumregelungsgerät mehr und hat eine eigene Fenster-Offen-Erkennung. Ein passender Wandthermostat ([[HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP|HM-TC-IT-WM-W-EU]]) ist seit Februar 2014 verfügbar.&lt;br /&gt;
&lt;br /&gt;
Das Gerät wird seit Anfang Oktober 2013 von Fhem unterstützt (siehe Diskussion im [http://forum.fhem.de/index.php/topic,14738.0.html Forum]).&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; scheint das erste HomeMatic-Device zu sein, bei dem ein Update der Firmware auch vom Anwender durchgeführt werden kann. Ein Firmware-Update erfordert einen [[HM-CFG-USB_USB_Konfigurations-Adapter|USB Konfigurations-Adapter]] und eine auf der eQ-3 Webseite herunterladbare Firmware Update Software. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die Solltemperaturen eines HM-CC-RT-DN lassen sich &amp;lt;ins&amp;gt;nicht&amp;lt;/ins&amp;gt; durch einen [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]] steuern. Dieser kann höchstens die Ist-Temperatur an den RT weiter geben, damit die Raumtemperatur nicht am RT selbst zur Ventilsteuerung genommen wird.&lt;br /&gt;
&lt;br /&gt;
Mit einem HM-CC-RT-DN können maximal (neben der Zentrale/Fhem):&lt;br /&gt;
* 7 HomeMatic Heizkörperthermostate&lt;br /&gt;
* 8 HomeMatic Tür-Fensterkontakte / Fenster-Drehgriffkontakte&lt;br /&gt;
* 8 Tastenpaare von HomeMatic Fernbedienungen bzw. Display-Wandtaster&lt;br /&gt;
* 1 HomeMatic Innen-Temperatur-Sensor&lt;br /&gt;
gep&#039;&#039;&#039;ee&#039;&#039;&#039;rt werden.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung: 2 Stck. 1,5V LR6/Mignon/AA&lt;br /&gt;
* Stromaufnahme: 180 mA max.&lt;br /&gt;
* Abmessungen (B x H x T): 54 x 65 x 93 mm&lt;br /&gt;
* Gewicht: 180 g (ohne Batterien)&lt;br /&gt;
* Ventilanschluss: M30 x 1,5 mm&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 1.2 (in CCU2 2.7.8)&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Funk-Heizkörperthermostat muss zuerst mit Fhem [[HomeMatic_Devices_pairen|gepairt]] werden. Da es den RT noch nicht lange gibt, sollten Sie sicher stellen, dass Fhem aktuell ist (update durchführen).&lt;br /&gt;
&lt;br /&gt;
=== Channels (Kanäle) ===&lt;br /&gt;
==== Channel (Kanal) 01 _Weather ====&lt;br /&gt;
Dieser Kanal dient zur Einspeisung der &amp;quot;IST-Temperatur&amp;quot;, als Sensor kann z.B. ein HomeMatic HM-WDS10-TH-O Funk-Temperatur-/Luftfeuchtesensor OTH dienen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;thermoSensor&amp;gt; peerChan 0 &amp;lt;rt_Weather&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 02 _Climate ====&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 03 _WindowRec ====&lt;br /&gt;
Hier lassen sich Fensterkontakte (HM-SEC-SC oder HM-SEC-RHS) peeren, die ihren Fensterstatus (geöffnet/gekippt) an ein oder mehrere Thermostate senden. Die Thermostate stellen anschließend die entsprechende (konfigurierbare) Temperatur ein. Der Temperaturwert kann je Fenster-Sensor unterschiedlich definiert werden. Sind mehrere Fenster gleichzeitig geöffnet, so wird der Thermostat auf die Temperatur des Sensors mit dem geringsten Temperaturwert eingestellt. &lt;br /&gt;
Ferner wird empfohlen, bei Einsatz von externen Sensoren, die interne „Fenster auf Erkennung“ zu deaktivieren (Weitere Details sind im [[HM-CC-RT-DN_Funk-Heizkörperthermostat#Channel_.28Kanal.29_04_ClimRT_tr|Channel (Kanal) 04 _ClimRT_tr]] näher beschrieben).&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
Zum Löschen von einen peer:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single unset&lt;br /&gt;
&lt;br /&gt;
Der Peer-(Lösch)Vorgang muss auf dem SC/RHS Sensor durch &amp;quot;drücken&amp;quot; der Anlerntaste bestätigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Temperatur für Windowopen definieren:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_WindowRec&amp;gt; regSet winOpnTemp 10 &amp;lt;fenster-sensor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 04 _ClimRT_tr ====&lt;br /&gt;
Dieser Kanal ist &amp;quot;der&amp;quot; operationelle. Hier kann z.B. die Temperatur eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Temperaturlisten setzen&#039;&#039;&#039;: um gebündelt die Wunschtemperaturen für eine ganze Woche zu setzen, können, wie beim HM-CC-TC [[HM-CC-TC Funk-Wandthermostat#Temperaturlisten|beschrieben]], Temperaturlisten in der z.B. [[99_myUtils anlegen|99_MyUtils.pm]] angelegt werden. Anders als beim HM-CC-TC sind diese Listen aber nicht auf den Channel &#039;&#039;_Climate&#039;&#039;, sondern auf den Channel &#039;&#039;_ClimRT_tr&#039;&#039; zu übertragen.&lt;br /&gt;
&lt;br /&gt;
 ######################################################&lt;br /&gt;
 # Temperatur-Liste für Kellertreppe&lt;br /&gt;
 # setzen per Aufruf von &amp;quot;{SetTempList_UG_Treppe_Heizung}&amp;quot;&lt;br /&gt;
 # Vorsicht, da kein HM-CC-TC, sondern HM-CC-RT-DN, ist hier ein anderer Channel&lt;br /&gt;
 # zu nehmen. Zudem wird mit prep|exec gearbeitet, um nicht alle Zeilen als&lt;br /&gt;
 # einzelnen Befehl zu senden, sondern per &amp;quot;prep&amp;quot; erst alles &lt;br /&gt;
 # zusammenzufassen und dann per &amp;quot;exec&amp;quot; an das Thermostat zu senden.&lt;br /&gt;
 # Also als ein einziger Befehl statt sieben. Vermeidet &amp;quot;NACKs&amp;quot;&lt;br /&gt;
 ######################################################&lt;br /&gt;
 sub&lt;br /&gt;
 SetTempList_UG_Treppe_Heizung()&lt;br /&gt;
  {&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListMon prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListTue prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListWed prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListThu prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListFri prep 05:30 16.0 07:00 18.0 15:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSat prep 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSun exec 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
 }&lt;br /&gt;
 # End SetTempList_UG_Treppe_Heizung&lt;br /&gt;
Bitte beachten: Die Zeiten sind jeweils &#039;&#039;&#039;bis&#039;&#039;&#039;-Zeiten! In o.a. Beispiel regelt der Thermostat also am Wochenende zwischen 7 und 9 Uhr auf 18 Grad!&lt;br /&gt;
&lt;br /&gt;
Sobald die neue/geänderte &#039;&#039;99_MyUtils.pm&#039;&#039; gespeichert ist, können per Fhem-Befehl &#039;&#039;&amp;lt;code&amp;gt;{SetTempList_UG_Treppe_Heizung}&amp;lt;/code&amp;gt;&#039;&#039; (also inclusive der geschweiften Klammern) die neuen Temperaturen an den HM-CC-RT-DN gesendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die interne Fernster auf Erkennung kann man wie folgt abschalten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_ClimRT_tr&amp;gt; regSet winOpnMode off&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 05 _ClimaTeam ====&lt;br /&gt;
Dieser Kanal dient zum peeren von mehreren RTs untereinander, also wenn z.B. zwei RTs in einem Raum sind und sich synchronisieren sollen. Das funktioniert jedoch nur, wenn die Einstellungsänderungen direkt am Thermostat durchgeführt werden. Änderungen, die in FHEM (bzw. über den Channel 4) durchgeführt werden, werden (nach bisherigen Erkenntnissen firmwarebedingt) nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die Temperaturen werden &#039;&#039;&#039;nicht&#039;&#039;&#039; ausgetauscht, wenn die Quelle (z.B. Fensterkontakt) &#039;in der Lage ist&#039; es an alle RTs zu verteilen (so die HM Philosophie).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden &amp;quot;nicht&amp;quot; weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Status der Fensterkontakte&lt;br /&gt;
* Temperaturvorgaben der Zentrale&lt;br /&gt;
* Temperaturlisten/Wochenplan&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Änderung der Temperatur am Handrad&lt;br /&gt;
* Boost am Handrad&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;rt1-ClimaTeam&amp;gt; peerChan 0 &amp;lt;rt2-ClimaTeam&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 06 _remote ====&lt;br /&gt;
Kann an eine Fernbedienung gekoppelt werden. Damit lässt sich z.B. mit der +/- Taste die Temperatur einstellen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;button&amp;gt; peerChan 0 &amp;lt;rt-remote&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Betriebsmodus Auto, Manu, Party (Urlaub) ===&lt;br /&gt;
&lt;br /&gt;
Im Automode kann man die Temperatur am Einstellrad des RT ändern. Zum nächsten Schaltpunkt wird dies dann überschrieben. Will man dies nicht (z.B. lange Party, ...), kann man auf manuell schalten. Dann bleibt die mit dem Drehregler (oder der Zentrale) eingestellte Temperatur stehen bis &#039;&#039;ultimo&#039;&#039;. Es gibt dann noch den Party- oder Urlaubsmodus. In diesen kann man den Automodus für eine gegebene Zeit überschreiben.&lt;br /&gt;
&lt;br /&gt;
==== Modus Auto ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Manu ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Party (Urlaub) ====&lt;br /&gt;
&lt;br /&gt;
Will man für eine festgesetzte Zeit (Stunden oder Tage) die Temperatur auf einen festen Wert einstellen (z.B. weil man in Urlaub fährt), kann man dies zwar auch durch Änderungen der Temperaturlisten erreichen, einfacher ist aber die Zuweisung über den Urlaubsmodus, da nach dessen Ablaufdatum und -zeitpunkt automatisch wieder zum vorher eingestellten Programm gewechselt wird. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ein Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  set HM-CC-RT-DN_ClimRT_tr controlParty 16 06.12.13 16:30 09.12.13 05:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird &lt;br /&gt;
&lt;br /&gt;
* vom 06.12.2013, 16:30 Uhr, &lt;br /&gt;
* bis zum 09.12.2013, 05:00 Uhr &lt;br /&gt;
* die gewünschte Raumtemperatur auf 16 °C&lt;br /&gt;
&lt;br /&gt;
eingestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&lt;br /&gt;
- Der Befehl muss auf den Channel 4 (&amp;quot;_ClimRT_tr&amp;quot;) erfolgen.&amp;lt;br /&amp;gt;&lt;br /&gt;
- Es werden nur Uhrzeiten zu jeder vollen oder halben Stunde angenommen (Minuten also 00 oder 30).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;quot;Urlaub&amp;quot; kann man eine ganze Wohnung (also mehrere RT´s) mit nur einem Befehl in den Party-mode versetzen.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Name &amp;quot;Urlaub&amp;quot; kann natürlich frei gewählt werden.&lt;br /&gt;
Im Beispiel werden 2 Heizkörper (Treppenhaus und Kammer) angesteuert. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu beachten sind folgende Dinge:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) Aktuelle Dateien (z.B. 10_CUL_HM) verwenden!&amp;lt;br /&amp;gt;&lt;br /&gt;
2) Bei dem partycontrol-Befehl in der Funktion KEIN Komma zwischen den Parametern.&amp;lt;br /&amp;gt;&lt;br /&gt;
3) Bei der Funktion die Parameterübergabe definieren ($$$$$) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufruf:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt; {Urlaub (&amp;quot;16&amp;quot;, &amp;quot;06.12.13&amp;quot;, &amp;quot;16:30&amp;quot;, &amp;quot;09.12.13&amp;quot; ,&amp;quot;05:00&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Funktion:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my $Urlaub;&lt;br /&gt;
sub&lt;br /&gt;
Urlaub($$$$$)&lt;br /&gt;
  {&lt;br /&gt;
    #lokale Variablendeklaration&lt;br /&gt;
    my ($temp,$startDate,$startTime,$endDate,$endTime) = @_;&lt;br /&gt;
 &lt;br /&gt;
    # HM-CC-RT-DN akzeptiert nur Zeiten, die auf Minute 00 oder 30 enden.&lt;br /&gt;
    # Daher $startTime und $endTime abrunden&lt;br /&gt;
    $startTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $startTime =~ s/\:[3-5].$/:30/;&lt;br /&gt;
    $endTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $endTime =~ s/\:[3-5].$/:30/;	&lt;br /&gt;
&lt;br /&gt;
    #Sendebefehl für ein HM-CC-RT-DN&lt;br /&gt;
    {fhem (&amp;quot;set Kammer controlParty $temp $startDate $startTime $endDate $endTime&amp;quot;)}&lt;br /&gt;
&lt;br /&gt;
    # alternative Schreibweise der Parameter:&lt;br /&gt;
    {fhem (&amp;quot;set Treppenhaus controlParty @_[0] @_[1] @_[2] @_[3] @_[4]&amp;quot;)};&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Burst-Modus ===&lt;br /&gt;
&lt;br /&gt;
Das ist ein &#039;&#039;&#039;Übertragungs&#039;&#039;&#039;modus für Nachrichten zwischen HM-Geräten und der Zentrale. Der RT erwacht alle 2,5 Minuten und dann überträgt die Zentrale die Kommanods. Wenn man einen Fensterkontakt oder eine Fernsteuerung nutzt, muss der RT sofort reagieren - dann muss man den Burst &#039;&#039;enablen&#039;&#039;. Der RT kann in diesem Fall sofort aufgeweckt werden und bearbeitet die Anforderung (Request). Das kann man auch von der Zentrale aus nutzen (so man möchte). Das ist der &#039;&#039;&#039;Vorteil&#039;&#039;&#039; des eingeschalteten Burst-Modus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil:&#039;&#039;&#039; Der RT muss den Receiver wach halten. Der RT und alle anderen Burst-Devices erwachen bei &#039;&#039;&#039;jedem&#039;&#039;&#039; Burst (egal für wen) und legen sich dann wieder schlafen.&lt;br /&gt;
* jeder Burst-trigger kostet Batterie für &#039;&#039;&#039;alle&#039;&#039;&#039; Burst-Geräte im System&lt;br /&gt;
* wenn Burst enabled ist kostet es dem RT Batteriekapazität&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst – wie es funktioniert&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schickt ein Sender eine burst Sequenz, wachen alle burst-Empfänger auf und prüfen die Message. &lt;br /&gt;
Wenn sie betroffen sind bleiben sie eine Zeit lang wach, ansonsten schlafen sie wieder ein. &lt;br /&gt;
Man beachte also, dass Senden eines Burst  Energie in ALLEN burst-Empfängern verbraucht, egal ob sie angesprochen sind.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HMLAN und burst&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
HMLAN hat ein Sendebudget das über eine Stunde berechnet wird. Burst belastet diese Konto deutlich - so können nicht mehr als 100 bursts /h gesendet werden - dann geht HMLAN in overload Wenn zusätzliche messages gesendet werden sind es entsprechend weniger. &lt;br /&gt;
Es ist als nicht vorteilhaft, unnötig bursts zu senden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt Devices, die immer auf burst reagieren und solche bei denen es abgeschaltet werden kann. So reagiert ein Rauchmelder immer auf Burst damit er seine Team-Kollegen hören kann. &lt;br /&gt;
Ein TC oder RT hingegen hat diese Funktion abschaltbar. &#039;Per default ist dies ausgeschaltet um Batterie zu sparen&#039;. Wenn ein VD gesteuert wird ist der TC ja selbst wach.  Wird er aber mit einem Fensterkontakt gekoppelt muss es eingeschaltet werden – sonst verpasst er die message. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ConditionalBurst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices mit abschaltbarem burst wie z.B. der &#039;HM-CC-RT-DN&#039;, gibt es ein Register burstRx mit dem das burst-erwachen eingestellt werden kann. &lt;br /&gt;
Sender, die einen burst-Aktor erwecken sollen muss man sagen, welcher peer burst benötigt. Hier kann ggf. das Register peerNeedsBurst nach dem peeren gesetzt werden. FHEM versucht dies automatisch beim Peeren zu erledigen. &lt;br /&gt;
Siehe Hminfo kommando  &#039;models&#039; um festzustellen, welche devices welchen mode unterstützen. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attribut burstAccess&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices, die abschaltbaren burst haben kann man ein attribut bustAccess 1_auto setzen. Es wird beim abschicken eines Kommandos versucht, das Device mit burst zu wecken. Sollte es nicht funktionieren wird gewartet, bis das Device aufwacht (meist reagieren solche Devices auch auf wakeup). Das setzen des Attributs ist angenehm – es werden aber ggf. viele bursts gesendet.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kommando burstXmit&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Mit diesem Kommando, das bei Devices mit contitional-Burst zu Verfügung steht, wird der burst gezielt von User angestossen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Der User schickt erst seine Kommandos an das device. Die Kommandos werden im Command-stack gesammelt. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dann sendet der User ein set burstXmit. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es passiert das gleiche wie bei burstAccess. &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM versucht mittels burst zu wecken und sendet bei Erfolg die Messages aus dem Kommandostack. &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Im Gegensatz zu burstAccess ist burstXmit gezielt einsetzbar und kann sparsamer verwendet werden. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; FHEM und burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM sendet eine burst automatisch mit Kommandos zu Devices, die nur burst unterstützen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So aktiviert man den burst-Betrieb am HM-CC-RT-DN&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Burst Mode einschalten&#039;&#039; (der Kanal 4 des Device WZ1 heisst hier WZ1_4) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;set WZ1_4 regSet burstRx on &amp;lt;/pre&amp;gt;&lt;br /&gt;
prüfen mit: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;get WZ1_4 reg burstRx &amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Nun in FHEM den Burst mode einschalten (sofern nicht burstXmit verwendet wird)&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WZ1 burstAccess 1_auto&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Attribut im Device und nicht im Kanal setzen, ansonsten gibt es eine Fehlermeldung.&lt;br /&gt;
&lt;br /&gt;
==Fhem-Log==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM Unknown device CUL_HM_HM_CC_RT_DN_2212BC, please define it&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC CUL_HM 2212BC A1A0184002212BC0000001000954B4551303531303031375900FFFF&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:24 3: LANCUL pairing (hmPairForSec) not enabled&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC-%Y.log CUL_HM_HM_CC_RT_DN_2212BC&lt;br /&gt;
 2013.10.10 20:03:24 3: Device Heizung_Wohnzimmer added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: Heizung_Wohnzimmer thermostat, model HM-CC-TC serialNr JEQ0044286&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Weather CUL_HM 2212BC01&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Climate CUL_HM 2212BC02&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_WindowRec CUL_HM 2212BC03&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr CUL_HM 2212BC04&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam CUL_HM 2212BC05&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_remote CUL_HM 2212BC06&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:35 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getSerial&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getConfig&lt;br /&gt;
 2013.10.10 20:03:54 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr motorErr: ok&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr ValvePosition: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr mode: manu&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr unknown0: 24&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr T: 18.4 desired: 18 valve: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC battery: ok&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC batteryLevel: 3.1 V&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC actuator: 3 %&lt;br /&gt;
&lt;br /&gt;
== Firmware Update ==&lt;br /&gt;
&lt;br /&gt;
Seit 31.01.2014 gibt es für den HM_CC_RT_DN eine neue Firmware Version (1.2). Diese kann von der eQ-3 Webseite heruntergeladen werden. Für das Firmware Update wird außerdem noch das ebenfalls dort herunterladbare &amp;quot;HomeMatic Firmware Update Tool V1.0&amp;quot; und ein&lt;br /&gt;
[[HM-CFG-USB_USB_Konfigurations-Adapter|HM-CFG-USB USB Konfigurations-Adapter]] benötigt. Momentan scheint nur die Version 2 des HM-CFG-USB unterstützt zu sein.&lt;br /&gt;
&lt;br /&gt;
Das Firmware Update Tool läuft nur unter Windows. Nach dem Start muss die Seriennummer des HM_CC_RT_DN eingegeben und die neue Firmware Datei ausgewählt werden. Dann wird das Update Tool durch einen Klick auf den entsprechenden Button in &amp;quot;Bereitschaft&amp;quot; gesetzt und dann das Update durch gleichzeitiges drücken der Auto-/Manu-Taste und der Comfort-/Eco-Taste am HM_CC_RT_DN gestartet. Nach erfolgreichem update erscheint &amp;quot;Inst&amp;quot; im Display und es muss eine erneute Adaptierfahrt durch drücken der Boost-Taste ausgelöst werden. Anschließend sollte der HM_CC_RT_DN wieder normal funktionieren. Die eingestellten Parameter und das Pairing mit FHEM gehen beim Update nicht verloren. Sollte das Update fehlschlagen, erscheint &amp;quot;Err&amp;quot; im Display. Normalerweise sollte dann durch erneutes starten der Prozedur am PC und HM_CC_RT_DN das ganze erneut durchführbar sein.&lt;br /&gt;
 &lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== TempList: Bad format ... ===&lt;br /&gt;
&lt;br /&gt;
Wenn Sie beim Setzen einer Temperaturliste nach dem o.a. Schema (&amp;quot;SetTempList...&amp;quot;) die Meldung&lt;br /&gt;
&lt;br /&gt;
 Bad format, use HH:MM TEMP ......&lt;br /&gt;
&lt;br /&gt;
erhalten, sollten Sie zunächst ein Update von Fhem durchführen. Nähere Informationen zu dieser Funktion siehe [[FHEM_Command_Beispiele#update_...|hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-heizkoerperthermostat-1.html Produktinfo]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_um.pdf Bedienungsanleitung (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_data.pdf Datenblatt (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/service/manuals/ventilkompatibilitaet.pdf Ventil-Kompatibilitätsliste (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5117</id>
		<title>HM-CC-RT-DN Funk-Heizkörperthermostat</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5117"/>
		<updated>2014-02-25T14:11:00Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; handelt es sich um einen &#039;&#039;&#039;Funk-Heizkörperthermostaten&#039;&#039;&#039;, der als Nachfolger den [[HM-CC-VD]] ablöst und seit Mitte September 2013 verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
== Vorbemerkungen ==&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Vorgänger misst der HM-CC-RT-DN selbst die Temperatur und verfügt über eine Boost-Funktion. Er braucht zur Steuerung kein separates Raumregelungsgerät mehr und hat eine eigene Fenster-Offen-Erkennung. Ein passender Wandthermostat ([[HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP|HM-TC-IT-WM-W-EU]]) ist seit Februar 2014 verfügbar.&lt;br /&gt;
&lt;br /&gt;
Das Gerät wird seit Anfang Oktober 2013 von Fhem unterstützt (siehe Diskussion im [http://forum.fhem.de/index.php/topic,14738.0.html Forum]).&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; scheint das erste HomeMatic-Device zu sein, bei dem ein Update der Firmware auch vom Anwender durchgeführt werden kann. Ein Firmware-Update erfordert einen [[HM-CFG-USB_USB_Konfigurations-Adapter|USB Konfigurations-Adapter]] und eine auf der eQ-3 Webseite herunterladbare Firmware Update Software. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die Solltemperaturen eines HM-CC-RT-DN lassen sich &amp;lt;ins&amp;gt;nicht&amp;lt;/ins&amp;gt; durch einen [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]] steuern. Dieser kann höchstens die Ist-Temperatur an den RT weiter geben, damit die Raumtemperatur nicht am RT selbst zur Ventilsteuerung genommen wird.&lt;br /&gt;
&lt;br /&gt;
Mit einem HM-CC-RT-DN können maximal (neben der Zentrale/Fhem):&lt;br /&gt;
* 7 HomeMatic Heizkörperthermostate&lt;br /&gt;
* 8 HomeMatic Tür-Fensterkontakte / Fenster-Drehgriffkontakte&lt;br /&gt;
* 8 Tastenpaare von HomeMatic Fernbedienungen bzw. Display-Wandtaster&lt;br /&gt;
* 1 HomeMatic Innen-Temperatur-Sensor&lt;br /&gt;
gep&#039;&#039;&#039;ee&#039;&#039;&#039;rt werden.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung: 2 Stck. 1,5V LR6/Mignon/AA&lt;br /&gt;
* Stromaufnahme: 180 mA max.&lt;br /&gt;
* Abmessungen (B x H x T): 54 x 65 x 93 mm&lt;br /&gt;
* Gewicht: 180 g (ohne Batterien)&lt;br /&gt;
* Ventilanschluss: M30 x 1,5 mm&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 1.2 (in CCU2 2.7.8)&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Funk-Heizkörperthermostat muss zuerst mit Fhem [[HomeMatic_Devices_pairen|gepairt]] werden. Da es den RT noch nicht lange gibt, sollten Sie sicher stellen, dass Fhem aktuell ist (update durchführen).&lt;br /&gt;
&lt;br /&gt;
=== Channels (Kanäle) ===&lt;br /&gt;
==== Channel (Kanal) 01 _Weather ====&lt;br /&gt;
Dieser Kanal dient zur Einspeisung der &amp;quot;IST-Temperatur&amp;quot;, als Sensor kann z.B. ein HomeMatic HM-WDS10-TH-O Funk-Temperatur-/Luftfeuchtesensor OTH dienen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;thermoSensor&amp;gt; peerChan 0 &amp;lt;rt_Weather&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 02 _Climate ====&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 03 _WindowRec ====&lt;br /&gt;
Hier lassen sich Fensterkontakte (HM-SEC-SC oder HM-SEC-RHS) peeren, die ihren Fensterstatus (geöffnet/gekippt) an ein oder mehrere Thermostate senden. Die Thermostate stellen anschließend die entsprechende (konfigurierbare) Temperatur ein. Der Temperaturwert kann je Fenster-Sensor unterschiedlich definiert werden. Sind mehrere Fenster gleichzeitig geöffnet, so wird der Thermostat auf die Temperatur des Sensors mit dem geringsten Temperaturwert eingestellt. &lt;br /&gt;
Ferner wird empfohlen, bei Einsatz von externen Sensoren, die interne „Fenster auf Erkennung“ zu deaktivieren (Weitere Details sind im [[HM-CC-RT-DN_Funk-Heizkörperthermostat#Channel_.28Kanal.29_04_ClimRT_tr|Channel (Kanal) 04 _ClimRT_tr]] näher beschrieben).&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
Zum Löschen von einen peer:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single unset&lt;br /&gt;
&lt;br /&gt;
Der Peer-(Lösch)Vorgang muss auf dem SC/RHS Sensor durch &amp;quot;drücken&amp;quot; der Anlerntaste bestätigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Temperatur für Windowopen definieren:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_WindowRec&amp;gt; regSet winOpnTemp 10 &amp;lt;fenster-sensor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 04 _ClimRT_tr ====&lt;br /&gt;
Dieser Kanal ist &amp;quot;der&amp;quot; operationelle. Hier kann z.B. die Temperatur eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Temperaturlisten setzen&#039;&#039;&#039;: um gebündelt die Wunschtemperaturen für eine ganze Woche zu setzen, können, wie beim HM-CC-TC [[HM-CC-TC Funk-Wandthermostat#Temperaturlisten|beschrieben]], Temperaturlisten in der z.B. [[99_myUtils anlegen|99_MyUtils.pm]] angelegt werden. Anders als beim HM-CC-TC sind diese Listen aber nicht auf den Channel &#039;&#039;_Climate&#039;&#039;, sondern auf den Channel &#039;&#039;_ClimRT_tr&#039;&#039; zu übertragen.&lt;br /&gt;
&lt;br /&gt;
 ######################################################&lt;br /&gt;
 # Temperatur-Liste für Kellertreppe&lt;br /&gt;
 # setzen per Aufruf von &amp;quot;{SetTempList_UG_Treppe_Heizung}&amp;quot;&lt;br /&gt;
 # Vorsicht, da kein HM-CC-TC, sondern HM-CC-RT-DN, ist hier ein anderer Channel&lt;br /&gt;
 # zu nehmen. Zudem wird mit prep|exec gearbeitet, um nicht alle Zeilen als&lt;br /&gt;
 # einzelnen Befehl zu senden, sondern per &amp;quot;prep&amp;quot; erst alles &lt;br /&gt;
 # zusammenzufassen und dann per &amp;quot;exec&amp;quot; an das Thermostat zu senden.&lt;br /&gt;
 # Also als ein einziger Befehl statt sieben. Vermeidet &amp;quot;NACKs&amp;quot;&lt;br /&gt;
 ######################################################&lt;br /&gt;
 sub&lt;br /&gt;
 SetTempList_UG_Treppe_Heizung()&lt;br /&gt;
  {&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListMon prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListTue prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListWed prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListThu prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListFri prep 05:30 16.0 07:00 18.0 15:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSat prep 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSun exec 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
 }&lt;br /&gt;
 # End SetTempList_UG_Treppe_Heizung&lt;br /&gt;
Bitte beachten: Die Zeiten sind jeweils &#039;&#039;&#039;bis&#039;&#039;&#039;-Zeiten! In o.a. Beispiel regelt der Thermostat also am Wochenende zwischen 7 und 9 Uhr auf 18 Grad!&lt;br /&gt;
&lt;br /&gt;
Sobald die neue/geänderte &#039;&#039;99_MyUtils.pm&#039;&#039; gespeichert ist, können per Fhem-Befehl &#039;&#039;&amp;lt;code&amp;gt;{SetTempList_UG_Treppe_Heizung}&amp;lt;/code&amp;gt;&#039;&#039; (also inclusive der geschweiften Klammern) die neuen Temperaturen an den HM-CC-RT-DN gesendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die interne Fernster auf Erkennung kann man wie folgt abschalten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_ClimRT_tr&amp;gt; regSet winOpnMode off&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 05 _ClimaTeam ====&lt;br /&gt;
Dieser Kanal dient zum peeren von mehreren RTs untereinander, also wenn z.B. zwei RTs in einem Raum sind und sich synchronisieren sollen. Das funktioniert jedoch nur, wenn die Einstellungsänderungen direkt am Thermostat durchgeführt werden. Änderungen, die in FHEM (bzw. über den Channel 4) durchgeführt werden, werden (nach bisherigen Erkenntnissen firmwarebedingt) nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die Temperaturen werden &#039;&#039;&#039;nicht&#039;&#039;&#039; ausgetauscht, wenn die Quelle (z.B. Fensterkontakt) &#039;in der Lage ist&#039; es an alle RTs zu verteilen (so die HM Philosophie).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden &amp;quot;nicht&amp;quot; weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Status der Fensterkontakte&lt;br /&gt;
* Temperaturvorgaben der Zentrale&lt;br /&gt;
* Temperaturlisten/Wochenplan&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Änderung der Temperatur am Handrad&lt;br /&gt;
* Boost am Handrad&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;rt1-ClimaTeam&amp;gt; peerChan 0 &amp;lt;rt2-ClimaTeam&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 06 _remote ====&lt;br /&gt;
Kann an eine Fernbedienung gekoppelt werden. Damit lässt sich z.B. mit der +/- Taste die Temperatur einstellen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;button&amp;gt; peerChan 0 &amp;lt;rt-remote&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Betriebsmodus Auto, Manu, Party (Urlaub) ===&lt;br /&gt;
&lt;br /&gt;
Im Automode kann man die Temperatur am Einstellrad des RT ändern. Zum nächsten Schaltpunkt wird dies dann überschrieben. Will man dies nicht (z.B. lange Party, ...), kann man auf manuell schalten. Dann bleibt die mit dem Drehregler (oder der Zentrale) eingestellte Temperatur stehen bis &#039;&#039;ultimo&#039;&#039;. Es gibt dann noch den Party- oder Urlaubsmodus. In diesen kann man den Automodus für eine gegebene Zeit überschreiben.&lt;br /&gt;
&lt;br /&gt;
==== Modus Auto ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Manu ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Party (Urlaub) ====&lt;br /&gt;
&lt;br /&gt;
Will man für eine festgesetzte Zeit (Stunden oder Tage) die Temperatur auf einen festen Wert einstellen (z.B. weil man in Urlaub fährt), kann man dies zwar auch durch Änderungen der Temperaturlisten erreichen, einfacher ist aber die Zuweisung über den Urlaubsmodus, da nach dessen Ablaufdatum und -zeitpunkt automatisch wieder zum vorher eingestellten Programm gewechselt wird. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ein Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  set HM-CC-RT-DN_ClimRT_tr controlParty 16 06.12.13 16:30 09.12.13 05:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird &lt;br /&gt;
&lt;br /&gt;
* vom 06.12.2013, 16:30 Uhr, &lt;br /&gt;
* bis zum 09.12.2013, 05:00 Uhr &lt;br /&gt;
* die gewünschte Raumtemperatur auf 16 °C&lt;br /&gt;
&lt;br /&gt;
eingestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&lt;br /&gt;
- Der Befehl muss auf den Channel 4 (&amp;quot;_ClimRT_tr&amp;quot;) erfolgen.&amp;lt;br /&amp;gt;&lt;br /&gt;
- Es werden nur Uhrzeiten zu jeder vollen oder halben Stunde angenommen (Minuten also 00 oder 30).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;quot;Urlaub&amp;quot; kann man eine ganze Wohnung (also mehrere RT´s) mit nur einem Befehl in den Party-mode versetzen.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Name &amp;quot;Urlaub&amp;quot; kann natürlich frei gewählt werden.&lt;br /&gt;
Im Beispiel werden 2 Heizkörper (Treppenhaus und Kammer) angesteuert. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu beachten sind folgende Dinge:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) Aktuelle Dateien (z.B. 10_CUL_HM) verwenden!&amp;lt;br /&amp;gt;&lt;br /&gt;
2) Bei dem partycontrol-Befehl in der Funktion KEIN Komma zwischen den Parametern.&amp;lt;br /&amp;gt;&lt;br /&gt;
3) Bei der Funktion die Parameterübergabe definieren ($$$$$) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufruf:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt; {Urlaub (&amp;quot;16&amp;quot;, &amp;quot;06.12.13&amp;quot;, &amp;quot;16:30&amp;quot;, &amp;quot;09.12.13&amp;quot; ,&amp;quot;05:00&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Funktion:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my $Urlaub;&lt;br /&gt;
sub&lt;br /&gt;
Urlaub($$$$$)&lt;br /&gt;
  {&lt;br /&gt;
    #lokale Variablendeklaration&lt;br /&gt;
    my ($temp,$startDate,$startTime,$endDate,$endTime) = @_;&lt;br /&gt;
 &lt;br /&gt;
    # HM-CC-RT-DN akzeptiert nur Zeiten, die auf Minute 00 oder 30 enden.&lt;br /&gt;
    # Daher $startTime und $endTime abrunden&lt;br /&gt;
    $startTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $startTime =~ s/\:[3-5].$/:30/;&lt;br /&gt;
    $endTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $endTime =~ s/\:[3-5].$/:30/;	&lt;br /&gt;
&lt;br /&gt;
    #Sendebefehl für ein HM-CC-RT-DN&lt;br /&gt;
    {fhem (&amp;quot;set Kammer controlParty $temp $startDate $startTime $endDate $endTime&amp;quot;)}&lt;br /&gt;
&lt;br /&gt;
    # alternative Schreibweise der Parameter:&lt;br /&gt;
    {fhem (&amp;quot;set Treppenhaus controlParty @_[0] @_[1] @_[2] @_[3] @_[4]&amp;quot;)};&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Burst-Modus ===&lt;br /&gt;
&lt;br /&gt;
Das ist ein &#039;&#039;&#039;Übertragungs&#039;&#039;&#039;modus für Nachrichten zwischen HM-Geräten und der Zentrale. Der RT erwacht alle 2,5 Minuten und dann überträgt die Zentrale die Kommanods. Wenn man einen Fensterkontakt oder eine Fernsteuerung nutzt, muss der RT sofort reagieren - dann muss man den Burst &#039;&#039;enablen&#039;&#039;. Der RT kann in diesem Fall sofort aufgeweckt werden und bearbeitet die Anforderung (Request). Das kann man auch von der Zentrale aus nutzen (so man möchte). Das ist der &#039;&#039;&#039;Vorteil&#039;&#039;&#039; des eingeschalteten Burst-Modus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil:&#039;&#039;&#039; Der RT muss den Receiver wach halten. Der RT und alle anderen Burst-Devices erwachen bei &#039;&#039;&#039;jedem&#039;&#039;&#039; Burst (egal für wen) und legen sich dann wieder schlafen.&lt;br /&gt;
* jeder Burst-trigger kostet Batterie für &#039;&#039;&#039;alle&#039;&#039;&#039; Burst-Geräte im System&lt;br /&gt;
* wenn Burst enabled ist kostet es dem RT Batteriekapazität&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst – wie es funktioniert&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schickt ein Sender eine burst Sequenz, wachen alle burst-Empfänger auf und prüfen die Message. &lt;br /&gt;
Wenn sie betroffen sind bleiben sie eine Zeit lang wach, ansonsten schlafen sie wieder ein. &lt;br /&gt;
Man beachte also, dass Senden eines Burst  Energie in ALLEN burst-Empfängern verbraucht, egal ob sie angesprochen sind.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HMLAN und burst&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
HMLAN hat ein Sendebudget das über eine Stunde berechnet wird. Burst belastet diese Konto deutlich - so können nicht mehr als 100 bursts /h gesendet werden - dann geht HMLAN in overload Wenn zusätzliche messages gesendet werden sind es entsprechend weniger. &lt;br /&gt;
Es ist als nicht vorteilhaft, unnötig bursts zu senden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt Devices, die immer auf burst reagieren und solche bei denen es abgeschaltet werden kann. So reagiert ein Rauchmelder immer auf Burst damit er seine Team-Kollegen hören kann. &lt;br /&gt;
Ein TC oder RT hingegen hat diese Funktion abschaltbar. &#039;Per default ist dies ausgeschaltet um Batterie zu sparen&#039;. Wenn ein VD gesteuert wird ist der TC ja selbst wach.  Wird er aber mit einem Fensterkontakt gekoppelt muss es eingeschaltet werden – sonst verpasst er die message. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ConditionalBurst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices mit abschaltbarem burst wie z.B. der &#039;HM-CC-RT-DN&#039;, gibt es ein Register burstRx mit dem das burst-erwachen eingestellt werden kann. &lt;br /&gt;
Sender, die einen burst-Aktor erwecken sollen muss man sagen, welcher peer burst benötigt. Hier kann ggf. das Register peerNeedsBurst nach dem peeren gesetzt werden. FHEM versucht dies automatisch beim Peeren zu erledigen. &lt;br /&gt;
Siehe Hminfo kommando  &#039;models&#039; um festzustellen, welche devices welchen mode unterstützen. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attribut burstAccess&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices, die abschaltbaren burst haben kann man ein attribut bustAccess 1_auto setzen. Es wird beim abschicken eines Kommandos versucht, das Device mit burst zu wecken. Sollte es nicht funktionieren wird gewartet, bis das Device aufwacht (meist reagieren solche Devices auch auf wakeup). Das setzen des Attributs ist angenehm – es werden aber ggf. viele bursts gesendet.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kommando burstXmit&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Mit diesem Kommando, das bei Devices mit contitional-Burst zu Verfügung steht, wird der burst gezielt von User angestossen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Der User schickt erst seine Kommandos an das device. Die Kommandos werden im Command-stack gesammelt. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dann sendet der User ein set burstXmit. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es passiert das gleiche wie bei burstAccess. &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM versucht mittels burst zu wecken und sendet bei Erfolg die Messages aus dem Kommandostack. &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Im Gegensatz zu burstAccess ist burstXmit gezielt einsetzbar und kann sparsamer verwendet werden. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; FHEM und burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM sendet eine burst automatisch mit Kommandos zu Devices, die nur burst unterstützen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So aktiviert man den burst-Betrieb am HM-CC-RT-DN&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Burst Mode einschalten&#039;&#039; (der Kanal 4 des Device WZ1 heisst hier WZ1_4) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;set WZ1_4 regSet burstRx on &amp;lt;/pre&amp;gt;&lt;br /&gt;
prüfen mit: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;get WZ1_4 reg burstRx &amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Nun in FHEM den Burst mode einschalten (sofern nicht burstXmit verwendet wird)&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WZ1 burstAccess 1_auto&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Attribut im Device und nicht im Kanal setzen, ansonsten gibt es eine Fehlermeldung.&lt;br /&gt;
&lt;br /&gt;
==Fhem-Log==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM Unknown device CUL_HM_HM_CC_RT_DN_2212BC, please define it&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC CUL_HM 2212BC A1A0184002212BC0000001000954B4551303531303031375900FFFF&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:24 3: LANCUL pairing (hmPairForSec) not enabled&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC-%Y.log CUL_HM_HM_CC_RT_DN_2212BC&lt;br /&gt;
 2013.10.10 20:03:24 3: Device Heizung_Wohnzimmer added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: Heizung_Wohnzimmer thermostat, model HM-CC-TC serialNr JEQ0044286&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Weather CUL_HM 2212BC01&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Climate CUL_HM 2212BC02&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_WindowRec CUL_HM 2212BC03&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr CUL_HM 2212BC04&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam CUL_HM 2212BC05&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_remote CUL_HM 2212BC06&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:35 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getSerial&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getConfig&lt;br /&gt;
 2013.10.10 20:03:54 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr motorErr: ok&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr ValvePosition: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr mode: manu&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr unknown0: 24&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr T: 18.4 desired: 18 valve: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC battery: ok&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC batteryLevel: 3.1 V&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC actuator: 3 %&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== TempList: Bad format ... ===&lt;br /&gt;
&lt;br /&gt;
Wenn Sie beim Setzen einer Temperaturliste nach dem o.a. Schema (&amp;quot;SetTempList...&amp;quot;) die Meldung&lt;br /&gt;
&lt;br /&gt;
 Bad format, use HH:MM TEMP ......&lt;br /&gt;
&lt;br /&gt;
erhalten, sollten Sie zunächst ein Update von Fhem durchführen. Nähere Informationen zu dieser Funktion siehe [[FHEM_Command_Beispiele#update_...|hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-heizkoerperthermostat-1.html Produktinfo]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_um.pdf Bedienungsanleitung (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_data.pdf Datenblatt (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/service/manuals/ventilkompatibilitaet.pdf Ventil-Kompatibilitätsliste (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP&amp;diff=5116</id>
		<title>HM-TC-IT-WM-W-EU Funk-Wandthermostat AP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP&amp;diff=5116"/>
		<updated>2014-02-25T14:04:02Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: /* Links */ Manual Link ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-TC-IT-WM-W-EU Funk-Wandthermostat AP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HomeMatic-Wandthermostat Aufputz. &lt;br /&gt;
&lt;br /&gt;
Er misst die Raumtemperatur und Luftfeuchtigkeit. Er verfügt über individuell einstellbare Wochenprogramme und Programmierung direkt am Gerät. Zusätzlich ist auch eine Boost-Funktion vorhanden (ermöglicht ein schnelles, kurzzeitiges Aufheizen des Heizkörpers). Er verfügt über ein eigenes Anzeigedisplay für Soll- und Isttemperatur sowie Luftfeuchtigkeit. Er kann mittels Klebestreifen irgendwo aufgeklebt werden, soll aber auch in Mehrfachrahmen von Berker, ELSO, Gira, Merten und JUNG passen.&lt;br /&gt;
&lt;br /&gt;
Verfügbar seit Februar 2014.&lt;br /&gt;
&lt;br /&gt;
Nachfolger des [[HM-CC-TC_Funk-Wandthermostat|HM-CC-TC]].&lt;br /&gt;
&lt;br /&gt;
Integration in Fhem ist mittlerweile möglich, ist aber evtl. noch nicht komplett.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Versorgungsspannung: 2 Stck. 1,5 V LR03/Micro/AAA&lt;br /&gt;
* Stromaufnahme (max.): 40 mA&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Schutzklasse: III&lt;br /&gt;
* Abmessungen (BxHxT ohne Rahmen): 55 x 55 x 20 mm&lt;br /&gt;
* Abmessungen (BxHxT mit Rahmen): 86 x 86 x 21,5 mm&lt;br /&gt;
* Gewicht (ohne Batterien): 74 g&lt;br /&gt;
* Temperaturwahl in Schritten von: 0,5 °C&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum HM-CC-TC &amp;lt;ins&amp;gt;soll&amp;lt;/ins&amp;gt; der HM-TC-IT-WM-W-EU auch andere HomeMatic-Schaltaktoren direkt anlernen können, womit z.B. die Steuerung elektrischer Heizungen möglich würde. Der HM-CC-TC konnte direkt nur die HM-CC-VD steuern.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Inbetriebnahme und Installation ==&lt;br /&gt;
&lt;br /&gt;
Zuerst muss das Wandthermostat natürlich mit FHEM gepairt werden. Danach kann das Peering mit den Heizkörperthermostaten des betreffenden Raumes stattfinden:&lt;br /&gt;
&lt;br /&gt;
Damit das Heizkörperthermostat HM-CC-RT-DN die Temperatur des Wandthermostats übernimmt, muss der Weather Kanal gepeert werden:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;HM-TC-IT-WM-W-EU-Gerät&amp;gt;_Weather peerChan 0 &amp;lt;HM-CC-RT-DN-Gerät&amp;gt;_Weather single set&lt;br /&gt;
&lt;br /&gt;
Damit der Heizkörperthermostat vom Wandthermostat auch eingestellt werden kann (Soll-Temperatur, Mode etc.), muss der Climate Kanal gepeert werden:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;HM-TC-IT-WM-W-EU-Gerät&amp;gt;_CLimate peerChan 0 &amp;lt;HM-CC-RT-DN-Gerät&amp;gt;_Climate single set&lt;br /&gt;
&lt;br /&gt;
Dies muss für jedes zu steuernde Heizkörperthermostat wiederholt werden.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&amp;lt; Bitte ergänzen &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
=== event Monitor ===&lt;br /&gt;
&amp;lt; Bitte ergänzen &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fhem.log Auszug ===&lt;br /&gt;
&amp;lt; Bitte ergänzen &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fhem.cfg ===&lt;br /&gt;
&amp;lt; Bitte ergänzen &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-TC-IT-WM-W-EU_UM_V1.0_GE_eQ-3_20131211_web.pdf Manual]&lt;br /&gt;
* [http://www.eq-3.de/Downloads/eq3/pdf_produkte/Funk-Wandthermostat_132030_Produktdatenblatt_V1.0.pdf Produktdatenblatt] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5115</id>
		<title>HM-CC-RT-DN Funk-Heizkörperthermostat</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=5115"/>
		<updated>2014-02-25T13:50:49Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Erweiterung der Funktion zum Setzen des Party Modes um eine Zeit-Rundung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; handelt es sich um einen &#039;&#039;&#039;Funk-Heizkörperthermostaten&#039;&#039;&#039;, der als Nachfolger den [[HM-CC-VD]] ablöst und seit Mitte September 2013 verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
== Vorbemerkungen ==&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum Vorgänger misst der HM-CC-RT-DN selbst die Temperatur und verfügt über eine Boost-Funktion. Er braucht zur Steuerung kein separates Raumregelungsgerät mehr und hat eine eigene Fenster-Offen-Erkennung. Laut Aussagen auf der ELV-Produktseite soll ein passender Wandthermostat ([[HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP|HM-TC-IT-WM-W-EU]]) &amp;quot;im Laufe des Jahres 2014&amp;quot; erscheinen (eQ3 konkretisiert diese Angabe auf März 2014).&lt;br /&gt;
&lt;br /&gt;
Das Gerät wird seit Anfang Oktober 2013 von Fhem unterstützt (siehe Diskussion im [http://forum.fhem.de/index.php/topic,14738.0.html Forum]).&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;HM-CC-RT-DN&#039;&#039;&#039; scheint das erste HomeMatic-Device zu sein, bei dem ein Update der Firmware auch vom Anwender durchgeführt werden kann. Zu dem &amp;quot;Wie&amp;quot; kann bisher noch nichts näheres gesagt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die Solltemperaturen eines HM-CC-RT-DN lassen sich &amp;lt;ins&amp;gt;nicht&amp;lt;/ins&amp;gt; durch einen [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]] steuern. Dieser kann höchstens die Ist-Temperatur an den RT weiter geben, damit die Raumtemperatur nicht am RT selbst zur Ventilsteuerung genommen wird.&lt;br /&gt;
&lt;br /&gt;
Mit einem HM-CC-RT-DN können maximal (neben der Zentrale/Fhem):&lt;br /&gt;
* 7 HomeMatic Heizkörperthermostate&lt;br /&gt;
* 8 HomeMatic Tür-Fensterkontakte / Fenster-Drehgriffkontakte&lt;br /&gt;
* 8 Tastenpaare von HomeMatic Fernbedienungen bzw. Display-Wandtaster&lt;br /&gt;
* 1 HomeMatic Innen-Temperatur-Sensor&lt;br /&gt;
gep&#039;&#039;&#039;ee&#039;&#039;&#039;rt werden.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung: 2 Stck. 1,5V LR6/Mignon/AA&lt;br /&gt;
* Stromaufnahme: 180 mA max.&lt;br /&gt;
* Abmessungen (B x H x T): 54 x 65 x 93 mm&lt;br /&gt;
* Gewicht: 180 g (ohne Batterien)&lt;br /&gt;
* Ventilanschluss: M30 x 1,5 mm&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 1.2 (in CCU2 2.7.8)&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Funk-Heizkörperthermostat muss zuerst mit Fhem [[HomeMatic_Devices_pairen|gepairt]] werden. Da es den RT noch nicht lange gibt, sollten Sie sicher stellen, dass Fhem aktuell ist (update durchführen).&lt;br /&gt;
&lt;br /&gt;
=== Channels (Kanäle) ===&lt;br /&gt;
==== Channel (Kanal) 01 _Weather ====&lt;br /&gt;
Dieser Kanal dient zur Einspeisung der &amp;quot;IST-Temperatur&amp;quot;, als Sensor kann z.B. ein HomeMatic HM-WDS10-TH-O Funk-Temperatur-/Luftfeuchtesensor OTH dienen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;thermoSensor&amp;gt; peerChan 0 &amp;lt;rt_Weather&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 02 _Climate ====&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 03 _WindowRec ====&lt;br /&gt;
Hier lassen sich Fensterkontakte (HM-SEC-SC oder HM-SEC-RHS) peeren, die ihren Fensterstatus (geöffnet/gekippt) an ein oder mehrere Thermostate senden. Die Thermostate stellen anschließend die entsprechende (konfigurierbare) Temperatur ein. Der Temperaturwert kann je Fenster-Sensor unterschiedlich definiert werden. Sind mehrere Fenster gleichzeitig geöffnet, so wird der Thermostat auf die Temperatur des Sensors mit dem geringsten Temperaturwert eingestellt. &lt;br /&gt;
Ferner wird empfohlen, bei Einsatz von externen Sensoren, die interne „Fenster auf Erkennung“ zu deaktivieren (Weitere Details sind im [[HM-CC-RT-DN_Funk-Heizkörperthermostat#Channel_.28Kanal.29_04_ClimRT_tr|Channel (Kanal) 04 _ClimRT_tr]] näher beschrieben).&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single&lt;br /&gt;
&lt;br /&gt;
Zum Löschen von einen peer:&lt;br /&gt;
 set &amp;lt;fenster-sensor&amp;gt; peerChan 0 &amp;lt;rt_WindowRec&amp;gt; single unset&lt;br /&gt;
&lt;br /&gt;
Der Peer-(Lösch)Vorgang muss auf dem SC/RHS Sensor durch &amp;quot;drücken&amp;quot; der Anlerntaste bestätigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Temperatur für Windowopen definieren:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_WindowRec&amp;gt; regSet winOpnTemp 10 &amp;lt;fenster-sensor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 04 _ClimRT_tr ====&lt;br /&gt;
Dieser Kanal ist &amp;quot;der&amp;quot; operationelle. Hier kann z.B. die Temperatur eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Temperaturlisten setzen&#039;&#039;&#039;: um gebündelt die Wunschtemperaturen für eine ganze Woche zu setzen, können, wie beim HM-CC-TC [[HM-CC-TC Funk-Wandthermostat#Temperaturlisten|beschrieben]], Temperaturlisten in der z.B. [[99_myUtils anlegen|99_MyUtils.pm]] angelegt werden. Anders als beim HM-CC-TC sind diese Listen aber nicht auf den Channel &#039;&#039;_Climate&#039;&#039;, sondern auf den Channel &#039;&#039;_ClimRT_tr&#039;&#039; zu übertragen.&lt;br /&gt;
&lt;br /&gt;
 ######################################################&lt;br /&gt;
 # Temperatur-Liste für Kellertreppe&lt;br /&gt;
 # setzen per Aufruf von &amp;quot;{SetTempList_UG_Treppe_Heizung}&amp;quot;&lt;br /&gt;
 # Vorsicht, da kein HM-CC-TC, sondern HM-CC-RT-DN, ist hier ein anderer Channel&lt;br /&gt;
 # zu nehmen. Zudem wird mit prep|exec gearbeitet, um nicht alle Zeilen als&lt;br /&gt;
 # einzelnen Befehl zu senden, sondern per &amp;quot;prep&amp;quot; erst alles &lt;br /&gt;
 # zusammenzufassen und dann per &amp;quot;exec&amp;quot; an das Thermostat zu senden.&lt;br /&gt;
 # Also als ein einziger Befehl statt sieben. Vermeidet &amp;quot;NACKs&amp;quot;&lt;br /&gt;
 ######################################################&lt;br /&gt;
 sub&lt;br /&gt;
 SetTempList_UG_Treppe_Heizung()&lt;br /&gt;
  {&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListMon prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListTue prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListWed prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListThu prep 05:30 16.0 07:00 18.0 16:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListFri prep 05:30 16.0 07:00 18.0 15:00 18.5 20:30 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSat prep 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
    { fhem (&amp;quot;set UG.Treppe.Heizung_ClimRT_tr tempListSun exec 07:00 16.0 09:00 18.0 15:00 18.5 21:00 19.0 24:00 16.0&amp;quot;)};&lt;br /&gt;
 }&lt;br /&gt;
 # End SetTempList_UG_Treppe_Heizung&lt;br /&gt;
Bitte beachten: Die Zeiten sind jeweils &#039;&#039;&#039;bis&#039;&#039;&#039;-Zeiten! In o.a. Beispiel regelt der Thermostat also am Wochenende zwischen 7 und 9 Uhr auf 18 Grad!&lt;br /&gt;
&lt;br /&gt;
Sobald die neue/geänderte &#039;&#039;99_MyUtils.pm&#039;&#039; gespeichert ist, können per Fhem-Befehl &#039;&#039;&amp;lt;code&amp;gt;{SetTempList_UG_Treppe_Heizung}&amp;lt;/code&amp;gt;&#039;&#039; (also inclusive der geschweiften Klammern) die neuen Temperaturen an den HM-CC-RT-DN gesendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die interne Fernster auf Erkennung kann man wie folgt abschalten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;rt_ClimRT_tr&amp;gt; regSet winOpnMode off&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 05 _ClimaTeam ====&lt;br /&gt;
Dieser Kanal dient zum peeren von mehreren RTs untereinander, also wenn z.B. zwei RTs in einem Raum sind und sich synchronisieren sollen. Das funktioniert jedoch nur, wenn die Einstellungsänderungen direkt am Thermostat durchgeführt werden. Änderungen, die in FHEM (bzw. über den Channel 4) durchgeführt werden, werden (nach bisherigen Erkenntnissen firmwarebedingt) nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die Temperaturen werden &#039;&#039;&#039;nicht&#039;&#039;&#039; ausgetauscht, wenn die Quelle (z.B. Fensterkontakt) &#039;in der Lage ist&#039; es an alle RTs zu verteilen (so die HM Philosophie).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden &amp;quot;nicht&amp;quot; weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Status der Fensterkontakte&lt;br /&gt;
* Temperaturvorgaben der Zentrale&lt;br /&gt;
* Temperaturlisten/Wochenplan&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folgende Änderungen werden weitergegeben:&#039;&#039;&#039;&lt;br /&gt;
* Änderung der Temperatur am Handrad&lt;br /&gt;
* Boost am Handrad&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;rt1-ClimaTeam&amp;gt; peerChan 0 &amp;lt;rt2-ClimaTeam&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Channel (Kanal) 06 _remote ====&lt;br /&gt;
Kann an eine Fernbedienung gekoppelt werden. Damit lässt sich z.B. mit der +/- Taste die Temperatur einstellen.&lt;br /&gt;
&lt;br /&gt;
Befehl zum peeren:&lt;br /&gt;
&amp;lt;pre&amp;gt;set &amp;lt;button&amp;gt; peerChan 0 &amp;lt;rt-remote&amp;gt; single&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Betriebsmodus Auto, Manu, Party (Urlaub) ===&lt;br /&gt;
&lt;br /&gt;
Im Automode kann man die Temperatur am Einstellrad des RT ändern. Zum nächsten Schaltpunkt wird dies dann überschrieben. Will man dies nicht (z.B. lange Party, ...), kann man auf manuell schalten. Dann bleibt die mit dem Drehregler (oder der Zentrale) eingestellte Temperatur stehen bis &#039;&#039;ultimo&#039;&#039;. Es gibt dann noch den Party- oder Urlaubsmodus. In diesen kann man den Automodus für eine gegebene Zeit überschreiben.&lt;br /&gt;
&lt;br /&gt;
==== Modus Auto ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Manu ====&lt;br /&gt;
&amp;lt; bitte ergänzen&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modus Party (Urlaub) ====&lt;br /&gt;
&lt;br /&gt;
Will man für eine festgesetzte Zeit (Stunden oder Tage) die Temperatur auf einen festen Wert einstellen (z.B. weil man in Urlaub fährt), kann man dies zwar auch durch Änderungen der Temperaturlisten erreichen, einfacher ist aber die Zuweisung über den Urlaubsmodus, da nach dessen Ablaufdatum und -zeitpunkt automatisch wieder zum vorher eingestellten Programm gewechselt wird. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ein Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  set HM-CC-RT-DN_ClimRT_tr controlParty 16 06.12.13 16:30 09.12.13 05:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird &lt;br /&gt;
&lt;br /&gt;
* vom 06.12.2013, 16:30 Uhr, &lt;br /&gt;
* bis zum 09.12.2013, 05:00 Uhr &lt;br /&gt;
* die gewünschte Raumtemperatur auf 16 °C&lt;br /&gt;
&lt;br /&gt;
eingestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&lt;br /&gt;
- Der Befehl muss auf den Channel 4 (&amp;quot;_ClimRT_tr&amp;quot;) erfolgen.&amp;lt;br /&amp;gt;&lt;br /&gt;
- Es werden nur Uhrzeiten zu jeder vollen oder halben Stunde angenommen (Minuten also 00 oder 30).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;quot;Urlaub&amp;quot; kann man eine ganze Wohnung (also mehrere RT´s) mit nur einem Befehl in den Party-mode versetzen.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Name &amp;quot;Urlaub&amp;quot; kann natürlich frei gewählt werden.&lt;br /&gt;
Im Beispiel werden 2 Heizkörper (Treppenhaus und Kammer) angesteuert. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu beachten sind folgende Dinge:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) Aktuelle Dateien (z.B. 10_CUL_HM) verwenden!&amp;lt;br /&amp;gt;&lt;br /&gt;
2) Bei dem partycontrol-Befehl in der Funktion KEIN Komma zwischen den Parametern.&amp;lt;br /&amp;gt;&lt;br /&gt;
3) Bei der Funktion die Parameterübergabe definieren ($$$$$) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufruf:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt; {Urlaub (&amp;quot;16&amp;quot;, &amp;quot;06.12.13&amp;quot;, &amp;quot;16:30&amp;quot;, &amp;quot;09.12.13&amp;quot; ,&amp;quot;05:00&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Funktion:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my $Urlaub;&lt;br /&gt;
sub&lt;br /&gt;
Urlaub($$$$$)&lt;br /&gt;
  {&lt;br /&gt;
    #lokale Variablendeklaration&lt;br /&gt;
    my ($temp,$startDate,$startTime,$endDate,$endTime) = @_;&lt;br /&gt;
 &lt;br /&gt;
    # HM-CC-RT-DN akzeptiert nur Zeiten, die auf Minute 00 oder 30 enden.&lt;br /&gt;
    # Daher $startTime und $endTime abrunden&lt;br /&gt;
    $startTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $startTime =~ s/\:[3-5].$/:30/;&lt;br /&gt;
    $endTime =~ s/\:[0-2].$/:00/;&lt;br /&gt;
    $endTime =~ s/\:[3-5].$/:30/;	&lt;br /&gt;
&lt;br /&gt;
    #Sendebefehl für ein HM-CC-RT-DN&lt;br /&gt;
    {fhem (&amp;quot;set Kammer controlParty $temp $startDate $startTime $endDate $endTime&amp;quot;)}&lt;br /&gt;
&lt;br /&gt;
    # alternative Schreibweise der Parameter:&lt;br /&gt;
    {fhem (&amp;quot;set Treppenhaus controlParty @_[0] @_[1] @_[2] @_[3] @_[4]&amp;quot;)};&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Burst-Modus ===&lt;br /&gt;
&lt;br /&gt;
Das ist ein &#039;&#039;&#039;Übertragungs&#039;&#039;&#039;modus für Nachrichten zwischen HM-Geräten und der Zentrale. Der RT erwacht alle 2,5 Minuten und dann überträgt die Zentrale die Kommanods. Wenn man einen Fensterkontakt oder eine Fernsteuerung nutzt, muss der RT sofort reagieren - dann muss man den Burst &#039;&#039;enablen&#039;&#039;. Der RT kann in diesem Fall sofort aufgeweckt werden und bearbeitet die Anforderung (Request). Das kann man auch von der Zentrale aus nutzen (so man möchte). Das ist der &#039;&#039;&#039;Vorteil&#039;&#039;&#039; des eingeschalteten Burst-Modus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil:&#039;&#039;&#039; Der RT muss den Receiver wach halten. Der RT und alle anderen Burst-Devices erwachen bei &#039;&#039;&#039;jedem&#039;&#039;&#039; Burst (egal für wen) und legen sich dann wieder schlafen.&lt;br /&gt;
* jeder Burst-trigger kostet Batterie für &#039;&#039;&#039;alle&#039;&#039;&#039; Burst-Geräte im System&lt;br /&gt;
* wenn Burst enabled ist kostet es dem RT Batteriekapazität&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst – wie es funktioniert&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schickt ein Sender eine burst Sequenz, wachen alle burst-Empfänger auf und prüfen die Message. &lt;br /&gt;
Wenn sie betroffen sind bleiben sie eine Zeit lang wach, ansonsten schlafen sie wieder ein. &lt;br /&gt;
Man beachte also, dass Senden eines Burst  Energie in ALLEN burst-Empfängern verbraucht, egal ob sie angesprochen sind.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HMLAN und burst&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
HMLAN hat ein Sendebudget das über eine Stunde berechnet wird. Burst belastet diese Konto deutlich - so können nicht mehr als 100 bursts /h gesendet werden - dann geht HMLAN in overload Wenn zusätzliche messages gesendet werden sind es entsprechend weniger. &lt;br /&gt;
Es ist als nicht vorteilhaft, unnötig bursts zu senden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt Devices, die immer auf burst reagieren und solche bei denen es abgeschaltet werden kann. So reagiert ein Rauchmelder immer auf Burst damit er seine Team-Kollegen hören kann. &lt;br /&gt;
Ein TC oder RT hingegen hat diese Funktion abschaltbar. &#039;Per default ist dies ausgeschaltet um Batterie zu sparen&#039;. Wenn ein VD gesteuert wird ist der TC ja selbst wach.  Wird er aber mit einem Fensterkontakt gekoppelt muss es eingeschaltet werden – sonst verpasst er die message. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ConditionalBurst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices mit abschaltbarem burst wie z.B. der &#039;HM-CC-RT-DN&#039;, gibt es ein Register burstRx mit dem das burst-erwachen eingestellt werden kann. &lt;br /&gt;
Sender, die einen burst-Aktor erwecken sollen muss man sagen, welcher peer burst benötigt. Hier kann ggf. das Register peerNeedsBurst nach dem peeren gesetzt werden. FHEM versucht dies automatisch beim Peeren zu erledigen. &lt;br /&gt;
Siehe Hminfo kommando  &#039;models&#039; um festzustellen, welche devices welchen mode unterstützen. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attribut burstAccess&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Devices, die abschaltbaren burst haben kann man ein attribut bustAccess 1_auto setzen. Es wird beim abschicken eines Kommandos versucht, das Device mit burst zu wecken. Sollte es nicht funktionieren wird gewartet, bis das Device aufwacht (meist reagieren solche Devices auch auf wakeup). Das setzen des Attributs ist angenehm – es werden aber ggf. viele bursts gesendet.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kommando burstXmit&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Mit diesem Kommando, das bei Devices mit contitional-Burst zu Verfügung steht, wird der burst gezielt von User angestossen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Der User schickt erst seine Kommandos an das device. Die Kommandos werden im Command-stack gesammelt. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dann sendet der User ein set burstXmit. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es passiert das gleiche wie bei burstAccess. &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM versucht mittels burst zu wecken und sendet bei Erfolg die Messages aus dem Kommandostack. &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Im Gegensatz zu burstAccess ist burstXmit gezielt einsetzbar und kann sparsamer verwendet werden. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; FHEM und burst devices&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
FHEM sendet eine burst automatisch mit Kommandos zu Devices, die nur burst unterstützen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So aktiviert man den burst-Betrieb am HM-CC-RT-DN&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Burst Mode einschalten&#039;&#039; (der Kanal 4 des Device WZ1 heisst hier WZ1_4) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;set WZ1_4 regSet burstRx on &amp;lt;/pre&amp;gt;&lt;br /&gt;
prüfen mit: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;get WZ1_4 reg burstRx &amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Nun in FHEM den Burst mode einschalten (sofern nicht burstXmit verwendet wird)&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WZ1 burstAccess 1_auto&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Attribut im Device und nicht im Kanal setzen, ansonsten gibt es eine Fehlermeldung.&lt;br /&gt;
&lt;br /&gt;
==Fhem-Log==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM Unknown device CUL_HM_HM_CC_RT_DN_2212BC, please define it&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC CUL_HM 2212BC A1A0184002212BC0000001000954B4551303531303031375900FFFF&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:24 3: LANCUL pairing (hmPairForSec) not enabled&lt;br /&gt;
 2013.10.10 20:03:24 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC-%Y.log CUL_HM_HM_CC_RT_DN_2212BC&lt;br /&gt;
 2013.10.10 20:03:24 3: Device Heizung_Wohnzimmer added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: Heizung_Wohnzimmer thermostat, model HM-CC-TC serialNr JEQ0044286&lt;br /&gt;
 2013.10.10 20:03:24 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:24 3: CUL_HM pair: CUL_HM_HM_CC_RT_DN_2212BC thermostat, model HM-CC-RT-DN serialNr KEQ0510017&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Weather CUL_HM 2212BC01&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:25 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Weather FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Weather-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Weather&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_Climate CUL_HM 2212BC02&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:26 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_Climate FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_Climate-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_Climate&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_WindowRec CUL_HM 2212BC03&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:27 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_WindowRec FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_WindowRec&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr CUL_HM 2212BC04&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:28 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam CUL_HM 2212BC05&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:29 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_ClimaTeam&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define CUL_HM_HM_CC_RT_DN_2212BC_remote CUL_HM 2212BC06&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:30 2: autocreate: define FileLog_CUL_HM_HM_CC_RT_DN_2212BC_remote FileLog /usr/local/FHEM/var/log/CUL_HM_HM_CC_RT_DN_2212BC_remote-%Y.log CUL_HM_HM_CC_RT_DN_2212BC_remote&lt;br /&gt;
 2013.10.10 20:03:35 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getSerial&lt;br /&gt;
 2013.10.10 20:03:40 2: CUL_HM set CUL_HM_HM_CC_RT_DN_2212BC getConfig&lt;br /&gt;
 2013.10.10 20:03:54 3: Device CUL_HM_HM_CC_RT_DN_2212BC added to ActionDetector with 000:10 time&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr motorErr: ok&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr ValvePosition: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr mode: manu&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr unknown0: 24&lt;br /&gt;
 2013-10-12 12:05:35.610 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC_ClimRT_tr T: 18.4 desired: 18 valve: 3 %&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC battery: ok&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC batteryLevel: 3.1 V&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC measured-temp: 18.4&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC desired-temp: 18&lt;br /&gt;
 2013-10-12 12:05:35.646 CUL_HM CUL_HM_HM_CC_RT_DN_2212BC actuator: 3 %&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== TempList: Bad format ... ===&lt;br /&gt;
&lt;br /&gt;
Wenn Sie beim Setzen einer Temperaturliste nach dem o.a. Schema (&amp;quot;SetTempList...&amp;quot;) die Meldung&lt;br /&gt;
&lt;br /&gt;
 Bad format, use HH:MM TEMP ......&lt;br /&gt;
&lt;br /&gt;
erhalten, sollten Sie zunächst ein Update von Fhem durchführen. Nähere Informationen zu dieser Funktion siehe [[FHEM_Command_Beispiele#update_...|hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-heizkoerperthermostat-1.html Produktinfo]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_um.pdf Bedienungsanleitung (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_data.pdf Datenblatt (PDF)]&lt;br /&gt;
* [http://www.elv-downloads.de/service/manuals/ventilkompatibilitaet.pdf Ventil-Kompatibilitätsliste (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4480</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4480"/>
		<updated>2014-01-20T15:03:42Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Da am Rauchmelder und am Funk-Vernetzungsmodul keine Modifikationen vorgenommen werden, sollte es hinsichtlich der VdS-Zertifizierung und Garantie keine Probleme geben. Die Garantie des HM-SEC-SC erlischt natürlich durch das anlöten der Kabel!&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx3.JPG|600px]] &lt;br /&gt;
  &lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
Nach dem Pairing des HM-SEC-SC und umbenenen des Devices in &amp;quot;Rauchmelder&amp;quot; sollte folgendes in der fhem.cfg stehen:&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten dann noch diese Attribute gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 attr Rauchmelder autoReadReg 5_readMissing&lt;br /&gt;
 attr Rauchmelder event-on-change-reading .*&lt;br /&gt;
 &lt;br /&gt;
Je nach Wunsch können dann noch weitere nützliche Attribute gesetzt werden um das Device z.B. in den entsprechenden Räumen anzuzeigen und die Darstellung im Web Interface zu verbessern:&lt;br /&gt;
&lt;br /&gt;
 attr Rauchmelder expert 0_off&lt;br /&gt;
 attr Rauchmelder room Flur,FlammEx,Device&lt;br /&gt;
 attr Rauchmelder devStateIcon off:general_ok *:secur_alarm&lt;br /&gt;
 attr Rauchmelder icon secur_smoke_detector&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4479</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4479"/>
		<updated>2014-01-20T14:18:28Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Da am Rauchmelder und am Funk-Vernetzungsmodul keine Modifikationen vorgenommen werden, sollte es hinsichtlich der VdS-Zertifizierung und Garantie keine Probleme geben. Die Garantie des HM-SEC-SC erlischt natürlich durch das anlöten der Kabel!&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx3.JPG|600px]] &lt;br /&gt;
  &lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
Nach dem Pairing des HM-SEC-SC und umbenenen des Devices in &amp;quot;Rauchmelder&amp;quot; sollte folgendes in der fhem.cfg stehen:&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten dann noch diese Attribute gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 attr Rauchmelder autoReadReg 5_readMissing&lt;br /&gt;
 attr Rauchmelder event-on-change-reading .*&lt;br /&gt;
 &lt;br /&gt;
Je nach Wunsch können dann noch weitere nützliche Attribute gesetzt werden um das Device z.B. in den entsprechenden Räumen anzuzeigen und die Darstellung im Web Interface zu verbessern:&lt;br /&gt;
&lt;br /&gt;
 attr Rauchmelder webCmd statusRequest&lt;br /&gt;
 attr Rauchmelder expert 0_off&lt;br /&gt;
 attr Rauchmelder room Flur,FlammEx,Device&lt;br /&gt;
 attr Rauchmelder devStateIcon off:general_ok *:secur_alarm&lt;br /&gt;
 attr Rauchmelder icon secur_smoke_detector&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4478</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4478"/>
		<updated>2014-01-20T14:17:48Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Da am Rauchmelder und am Funk-Vernetzungsmodul keine Modifikationen vorgenommen werden, sollte es hinsichtlich der VdS-Zertifizierung und Garantie keine Probleme geben. Die Garantie des HM-SEC-SC erlischt natürlich durch das anlöten der Kabel!&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx3.JPG|600px]] &lt;br /&gt;
  &lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
Nach dem Pairing des HM-SEC-SC und umbenenen des Devices in &amp;quot;Rauchmelder&amp;quot; sollte folgendes in der fhem.cfg stehen:&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten dann noch diese Attribute gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 attr Rauchmelder autoReadReg 5_readMissing&lt;br /&gt;
 attr Rauchmelder event-on-change-reading .*&lt;br /&gt;
 &lt;br /&gt;
Je nach Wunsch können dann noch weitere nützliche Attribute gesetzt werden um das Device z.B. in den entsprechenden Räumen anzuzeigen und die Darstellung im Web Interface zu verbessern:&lt;br /&gt;
  &lt;br /&gt;
 attr Rauchmelder webCmd statusRequest&lt;br /&gt;
 attr Rauchmelder expert 0_off&lt;br /&gt;
 attr Rauchmelder room Flur,FlammEx,Device&lt;br /&gt;
 attr Rauchmelder devStateIcon off:general_ok *:secur_alarm&lt;br /&gt;
 attr Rauchmelder icon secur_smoke_detector&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4476</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4476"/>
		<updated>2014-01-20T12:09:19Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Da am Rauchmelder und am Funk-Vernetzungsmodul keine Modifikationen vorgenommen werden, sollte es hinsichtlich der VdS-Zertifizierung und Garantie keine Probleme geben. Die Garantie des HM-SEC-SC erlischt natürlich durch das anlöten der Kabel!&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx3.JPG|600px]] &lt;br /&gt;
  &lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder room Flur&lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4475</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4475"/>
		<updated>2014-01-20T12:08:01Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|600px]] &lt;br /&gt;
&lt;br /&gt;
Da am Rauchmelder und am Funk-Vernetzungsmodul keine Modifikationen vorgenommen werden, sollte es hinsichtlich der VdS-Zertifizierung und Garantie keine Probleme geben. Die Garantie des HM-SEC-SC erlischt natürlich durch das anlöten der Kabel!&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx3.JPG|600px]] &lt;br /&gt;
  &lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder room Flur&lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:FlammEx3.JPG&amp;diff=4474</id>
		<title>Datei:FlammEx3.JPG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:FlammEx3.JPG&amp;diff=4474"/>
		<updated>2014-01-20T12:03:52Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4473</id>
		<title>FlammEx Rauchmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FlammEx_Rauchmelder&amp;diff=4473"/>
		<updated>2014-01-20T12:02:05Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Anschluß von FlammEx Rauchmeldern an FHEM über einen HomeMatic HM-SEC-SC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Features ==&lt;br /&gt;
Die FlammEx Rauchmelder der Serie FL 100 sind VdS-zertifizierte Rauchmelder, die über Kabel oder ein optionales Funk-Vernetzungsmodul untereinander und unabhängig von einer Zentrale zu einer Gruppe zusammengefasst werden können. &lt;br /&gt;
&lt;br /&gt;
FlammEx bietet die Funk-Vernetzungsmodule sowohl in einer 433 MHz als auch in einer 868 MHz Variante an.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Da das von den Funk-Vernetzungsmodulen verwendete Protokoll proprietär und bisher noch nicht über FHEM Sender wie [[CUL]] verwendbar ist, besteht momentan nur die Möglichkeit, die Rauchmelder über ein Funkmodul anzubinden, das bereits von FHEM unterstützt wird. &lt;br /&gt;
&lt;br /&gt;
Aufgrund des geringen Preises bieten sich hier die FS20 oder HomeMatic Funk-Tür-/Fensterkontakt an. Am Beispiel eines HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]] soll hier beschrieben werden, wie die Rauchmelder an FHEM angebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Benötig werden:&lt;br /&gt;
&lt;br /&gt;
* FlammEx FL 100 Rauchmelder mit Funk-Vernetzungsmodul&lt;br /&gt;
* FlammEx Relaismodul FL 00 4738K&lt;br /&gt;
* FlammEx Anschlussdose FL 100 KAD&lt;br /&gt;
* HomeMatic [[HM-SEC-SC Tür-Fensterkontakt]]&lt;br /&gt;
* etwas zweiadriges Kabel, Lötkolben und Werkzeug &lt;br /&gt;
&lt;br /&gt;
Der [[HM-SEC-SC Tür-Fensterkontakt]] wird wie in der unten Verlinkten Anleitung aus dem FHEM Forum mit zwei Anschlußdrähten versehen. Diese werden rechts und links an den Reed-Kontakt angelötet. Die Kabel können dann durch die bestehende Öffnung in der Batteriefachabdeckung nach außen geführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx1.JPG|800px]] &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das Relaismodul mit dem Funk-Vernetzungsmodul des Rauchmelders verbunden und in die Anschlussdose gesetzt. Der HM-SEC-SC passt auch noch in die Dose. Die beiden am HM-SEC-SC festgelöteten Kabel werden jetzt mit den Schließer-Kontakten des Relaismoduls verbunden und dann kann alles montiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:FlammEx2.JPG|800px]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Beispiel für die Konfiguration der Einbindung über einen [[HM-SEC-SC Tür-Fensterkontakt]]:&lt;br /&gt;
&lt;br /&gt;
ssssss -&amp;amp;gt; 6-stellige hexadezimale Seriennummer. (Siehe Logfile: CUL_HM Unknown device CUL_HM_SD_ssssss, please define it)&lt;br /&gt;
&lt;br /&gt;
xxxxxxxxxx -&amp;amp;gt; 10-stellige Seriennummern (vom Aufkleber auf dem Gerät)&lt;br /&gt;
&lt;br /&gt;
 define Rauchmelder CUL_HM ssssss&lt;br /&gt;
 attr Rauchmelder .devInfo 810101&lt;br /&gt;
 attr Rauchmelder .stc 80&lt;br /&gt;
 attr Rauchmelder actCycle 028:00&lt;br /&gt;
 attr Rauchmelder actStatus dead&lt;br /&gt;
 attr Rauchmelder autoReadReg 4_reqStatus&lt;br /&gt;
 attr Rauchmelder expert 2_full&lt;br /&gt;
 attr Rauchmelder firmware 2.1&lt;br /&gt;
 attr Rauchmelder model HM-SEC-SC&lt;br /&gt;
 attr Rauchmelder peerIDs &lt;br /&gt;
 attr Rauchmelder room Flur&lt;br /&gt;
 attr Rauchmelder serialNr xxxxxxxxxx&lt;br /&gt;
 attr Rauchmelder subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Anleitung zur Modifikation des HM-Sec-Sc Funk-Tür-/Fensterkontakt [http://forum.fhem.de/index.php/topic,12379.0.html]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:FlammEx2.JPG&amp;diff=4472</id>
		<title>Datei:FlammEx2.JPG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:FlammEx2.JPG&amp;diff=4472"/>
		<updated>2014-01-20T11:59:40Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:FlammEx1.JPG&amp;diff=4471</id>
		<title>Datei:FlammEx1.JPG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:FlammEx1.JPG&amp;diff=4471"/>
		<updated>2014-01-20T11:57:55Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Arduino_Firmata&amp;diff=3675</id>
		<title>Diskussion:Arduino Firmata</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Arduino_Firmata&amp;diff=3675"/>
		<updated>2013-11-27T11:54:22Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: Die Seite wurde neu angelegt: „Wäre es sinnvoll irgendwo in diesem Artikel klarer herauszustellen, dass es nur möglich ist, einen Arduino anzuschließen, da es scheinbar keine Möglichkeit…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wäre es sinnvoll irgendwo in diesem Artikel klarer herauszustellen, dass es nur möglich ist, einen Arduino anzuschließen, da es scheinbar keine Möglichkeit gibt, die mit define Firmata_IN angelegten Channels an ein benanntes, mit define FIRMATA angelegtes Device zu binden?&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WS3600&amp;diff=3464</id>
		<title>WS3600</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WS3600&amp;diff=3464"/>
		<updated>2013-11-10T12:37:04Z</updated>

		<summary type="html">&lt;p&gt;Reibuehl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Other Components]]&lt;br /&gt;
Über das [http://fhem.de/commandref.html#WS3600 WS3600] Device Modul können diverse Wetterstationen an FHEM angeschlossen werden. Das Modul geht davon aus, dass eine WS3600-kompatible Wetterstation per USB angeschlossen ist und über ein Kommando ein standardisiertes Ausgabeformat auf STDOUT ausgibt.&lt;br /&gt;
&lt;br /&gt;
Das Modul WS3600 unterstützt bisher die folgenden Wetterstationen:&lt;br /&gt;
&lt;br /&gt;
* WS3600 - [http://wiki.wetterstationen.info/index.php?title=LaCrosse_WS3600 LaCrosse WS3600]&lt;br /&gt;
* WS2300 - [http://wiki.wetterstationen.info/index.php?title=LaCrosse_WS2300 LaCrosse WS2300]&lt;br /&gt;
* WS1080 - [http://wiki.wetterstationen.info/index.php?title=WS1080 Fine Offset WS1080/WH1080]&lt;br /&gt;
&lt;br /&gt;
== Direkt angeschlossene Wetterstation ==&lt;br /&gt;
&lt;br /&gt;
Das Modul erwartet, das die Wetterstation am selben System angeschlossen ist, auf dem auch FHEM läuft und über ein lokal ausgeführtes Ausleseprogramm abgefragt werden kann. Das Ausleseprogramm wird regelmäßig aufgerufen und muss die Wetterdaten in einem Datenformat ausgeben, das dem des Programms fetch3600 entspricht.&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Befehlen wird die Wetterstation WS3600 als Objekt myWS3600 eingebunden und ein FileLog angelegt, in das die Wetterdaten geschrieben werden:&lt;br /&gt;
&lt;br /&gt;
 define myWS3600 WS3600 /usr/local/bin/fetch360&lt;br /&gt;
 define FileLog_WS3600 FileLog ./log/WS3600-%Y.log myWS3600.*&lt;br /&gt;
&lt;br /&gt;
Die Wetterdaten können dann geplottet oder für notifys verwendet werden. &lt;br /&gt;
&lt;br /&gt;
== Über pywws angeschlossene Wetterstation ==&lt;br /&gt;
&lt;br /&gt;
[http://jim-easterbrook.github.io/pywws/doc/en/html/index.html pywws] ist eine Sammlung von Python Skripten, um die unter vielen verschiedenen Namen vertriebenen Fine Offset Wetterstationen auszulesen. Mit pywws können unter anderem die Wetterstationen Elecsa AstroTouch 6975, Watson W-8681, WH-1080PC, WH1080, WH1081, WH3080 und weitere baugleiche Modelle ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
pywws bietet von Haus aus keine WS3600-kompatible Ausgabe, diese kann aber über die pywws Ausgabe-Templates sehr einfach erstellt werden. Dazu muss nur ein neues Text-Template ws3600.txt angelegt werden, das ein File im WS3600-Format erzeugt:&lt;br /&gt;
&lt;br /&gt;
 #locale False#&lt;br /&gt;
 Date #idx &amp;quot;%d-%h-%Y&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 Time #idx &amp;quot;%H:%M:%S&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 Ti #temp_in &amp;quot;%.1f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 To #temp_out &amp;quot;%.1f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 RHi #hum_in &amp;quot;%d&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 RHo #hum_out &amp;quot;%d&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 DIR #wind_dir &amp;quot;%s&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 DIRtext #wind_dir &amp;quot;%s&amp;quot; &amp;quot;&amp;quot; &amp;quot;wind_dir_text[x]&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 WS #wind_ave &amp;quot;%.0f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 WG #wind_gust &amp;quot;%.0f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 Rtot #rain &amp;quot;%0.1f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 RP #rel_pressure &amp;quot;%.0f&amp;quot;#&lt;br /&gt;
 &lt;br /&gt;
 Tendency #pressure_trend &amp;quot;%s&amp;quot; &amp;quot;&amp;quot; &amp;quot;pressure_trend_text(x)&amp;quot;#&lt;br /&gt;
&lt;br /&gt;
Dieses Template wird dann in der pywws Konfigurationsdatei weather.ini entweder in die Liste der auszuführenden Text-Templates in der &amp;lt;tt&amp;gt;[hourly]&amp;lt;/tt&amp;gt; oder der &amp;lt;tt&amp;gt;[logged]&amp;lt;/tt&amp;gt; Sektion eingefügt.&lt;br /&gt;
&lt;br /&gt;
In FHEM kann die Wetterstation dann wie folgt definiert werden:&lt;br /&gt;
&lt;br /&gt;
 define myWS1080 WS3600 &amp;quot;cat /var/www/weather/data/ws3600.txt&amp;quot;&lt;br /&gt;
 define FileLog_WS3600 FileLog ./log/WS3600-%Y.log myWS1080.*&lt;br /&gt;
&lt;br /&gt;
Falls pywws auf einem anderen System läuft, kann der &amp;lt;tt&amp;gt;cat&amp;lt;/tt&amp;gt;-Befehl per SSH ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 define myWS1080 WS3600 &amp;quot;ssh pywws@weather.example.com cat /var/www/weather/data/ws3600.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Damit FHEM den &amp;lt;tt&amp;gt;cat&amp;lt;/tt&amp;gt;-Befehl per SSH ausführen kann, muss SSH so konfiguriert sein, dass der FHEM-User sich auf dem pywws System per Public Key ohne Passwort einloggen kann.&lt;/div&gt;</summary>
		<author><name>Reibuehl</name></author>
	</entry>
</feed>