<?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=Snowyrain</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=Snowyrain"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Snowyrain"/>
	<updated>2026-05-01T04:44:51Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18238</id>
		<title>HM-ES-TX-WM Zählersensor für Strom- und Gaszähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18238"/>
		<updated>2017-01-02T14:48:42Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-EM-TX-WM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Zählersensor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Powersensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868&amp;amp;nbsp;MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=6 V&lt;br /&gt;
|HWPowerConsumption=30 mA&lt;br /&gt;
|HWPoweredBy=4 Batterien LR6/AA/Mignon&lt;br /&gt;
|HWSize=68x105x30mm&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;
Der Zählersensor ist ein Datenerfassungssystem, das den Energieverbräuche (Strom, Gas) direkt am Zähler erfasst und in FHEM als laufender Saldo und als Momentanwerte verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gewicht: 195 g (inkl. 4 LR6/Mignon/AA-Batterien)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsszenarien ==&lt;br /&gt;
Mit den erfassten und gesammelten Daten lassen sich Aktionen beim Erreichen bestimmter Schwellwerte auslösen, Verbrauchs- und Kostenstatistiken erstellen sowie beliebige weitere Abhängigkeiten bilden. Durch die Funkdatenübertragung sowie den Batteriebetrieb (1 bis 2 Jahre Betriebsdauer verspricht der Hersteller mit einem Satz) ist die Installation denkbar einfach und erfordert lediglich beim Anbringen der Leseeinheit Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2015 hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es &lt;br /&gt;
* einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben),&lt;br /&gt;
* LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie &lt;br /&gt;
* BK-G4-Gaszähler von Elster-Kromschröder (die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird)&lt;br /&gt;
gibt. Es ist laut Hersteller [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html ELV] nur der Bausatz verfügbar. Ein Fertiggerät ist aktuell nicht geplant.&lt;br /&gt;
&lt;br /&gt;
Die Zähler werden mit rückstandslos entfernbaren Klebepads angebracht.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
 &#039;&#039;&#039;list:        register | range              | peer     | description&#039;&#039;&#039; &lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central &lt;br /&gt;
   1: mtrConstGas      |   0 to 655.36      |          | constant gas &lt;br /&gt;
   1: mtrConstIr       |   0 to 65536       |          | constant IR &lt;br /&gt;
   1: mtrConstLed      |   0 to 65536       |          | constant led &lt;br /&gt;
   1: mtrSensIr        | -99 to 99          |          | sensiblity IR &lt;br /&gt;
   1: mtrType          |     literal        |          | type of measurement options:LED,gas,unknown,IR &lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellen Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass alle drei Minuten der &#039;&#039;zuletzt bekannte Wert&#039;&#039; gesendet wird. Das heißt im Besonderen:&lt;br /&gt;
&lt;br /&gt;
* Sollten innerhalb der drei Minuten mehrfach Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation der Impulse (Mittelwert, Summe, …) statt.&lt;br /&gt;
* Sollten innerhalb der drei Minuten keinerlei Impulse auftreten, wird dennoch der zuletzt bekannte Leistungswert gesendet, auch wenn er mehrere Minuten/Stunden/Tage alt ist.&lt;br /&gt;
&lt;br /&gt;
Der state des Devices zeigt den letzten Übertragungsstatus an das Device, das Geräte unterstützt keinen Burst. D.h. einen an das Gerät abgesetzten Befehl z.B. getConfig oder einstellen von Zählerkonstanten sollte man möglichst am Geräte bestätigen, sonst könnte es sein, dass ein ACK zu spät zurück kommt und man sich anschließend im state über ein NACK wundert. &lt;br /&gt;
&lt;br /&gt;
Scheinbar gibt es für das reading energy bei 838860.7 einen Zählerüberlauf. [http://forum.fhem.de/index.php/topic,32827.msg270012.html#msg270012]&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Sensor wird mit einem FHEM im Update-Stand vom (mindestens) 7.2.2015 funktionsfähig eingebunden (getestet in der Variante mit Ferraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading &#039;&#039;energy&#039;&#039; die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&lt;br /&gt;
&lt;br /&gt;
Für die perfekte Konfiguration wird auf die Seite &amp;quot;[[Heizleistung und Gasverbrauch]]&amp;quot; verwiesen, wo eine vollständige Lösung für die Umrechnung von Gasverbrauch in kW/h, Graphen und Hilfsprogramme vorgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
 &#039;&#039;&#039;Reading:       |Beispiel&#039;&#039;&#039;   &lt;br /&gt;
 D-firmware     |1.0&lt;br /&gt;
 D-serialNr     |MEQ0025452 &lt;br /&gt;
 battery        |ok&lt;br /&gt;
 boot           |off &lt;br /&gt;
 current        |0 &lt;br /&gt;
 eState         |E: 6199.9 P: 1713 I: 0 U: 0 f: 50 &lt;br /&gt;
 energy         |6199.9 &lt;br /&gt;
 energyOffset   |84413.2&lt;br /&gt;
 frequency      |50 &lt;br /&gt;
 power          |1713 &lt;br /&gt;
 powerOn        |2015-03-26 14:57:48&lt;br /&gt;
 voltage        |0&lt;br /&gt;
&lt;br /&gt;
=== Events Auszug ===&lt;br /&gt;
 &#039;&#039;&#039;Event     |Beispielswert&#039;&#039;&#039;&lt;br /&gt;
 battery*  |ok&lt;br /&gt;
 energy    |10186.6&lt;br /&gt;
 power     |283&lt;br /&gt;
 current   |0&lt;br /&gt;
 voltage   |0&lt;br /&gt;
 frequency |50&lt;br /&gt;
 eState    |E: 10186.6 P: 283 I: 0 U: 0 f: 50&lt;br /&gt;
 boot      |off&lt;br /&gt;
&lt;br /&gt;
Ein battery-Event wird nicht zyklisch getriggert. Erst wenn die Batterie tatsächlich leer ist, wird eine entsprechende Meldung vom Gerät selber gesendet und ein battery-Event getriggert (battery: low).&lt;br /&gt;
&lt;br /&gt;
Mit einem Userreading lässt sich die Angabe aus &#039;&#039;energy&#039;&#039; (zum Beispiel für einen Stromzähler (Wh)) in die auf dem Zähler übliche Angabe kWh umrechnen und zugleich mit dem Aufaddieren des Unterschieds beim Start (das Zählermodul beginnt ja mit 0 Wh, während der Zähler meist schon einige Jahre auf der &amp;quot;Rolle&amp;quot; hat) die Angaben gleichziehen:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;lt;DeviceName&amp;gt;&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Nach dem Erkennen durch [[autocreate]] wird der Zählersensor mit diesen Angaben eingebunden:&lt;br /&gt;
&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 IODev CUL_0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actCycle 000:10&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actStatus alive&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 expert 2_full&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 firmware 1.0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 subType powerSensor&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_01 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 icon measure_power&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 peerIDs &lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_02 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_02 model HM-ES-TX-WM&lt;br /&gt;
&lt;br /&gt;
Die Übertragung der Messwerte erfolgt in Kanal 01 (hier: &amp;quot;CUL_HM_HM_ES_TX_WM_353594_IEC_01&amp;quot;). Für eine Darstellung als SVG-Plot können die Messwerte mittels folgender Anweisung in einer Datei abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
 define FileLog_CUL_HM_HM_ES_TX_WM_353594_IEC_01 FileLog ./log/Stromverbrauch-%Y-%m.log  CUL_HM_HM_ES_TX_WM_353594_IEC_01&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb mit den verschiedenen Zählern muß eines der Readings &#039;&#039;&#039;R-mtrConst&#039;&#039;&#039;XXX auf den jeweiligen verwendeten Zähler konfiguriert werden. Z.B. kann ein Ferraris-Stromzähler 100, 150 oder 200 Umdrehungen je kWh benötigen. Dies geschieht z.B. für 150 Meldungen je Einheit für einen Ferraris-Zähler mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstIr 150&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder für einen Gaszähler auf der 1. Rolle (d.h. 1 Impuls je 0.1 m^3)&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstGas 0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Fhem bis zum Anfang November 2015 war hier ein kleiner Bug enthalten, der diesen Wert nicht akzeptierte. In diesem Fall läßt sich die Anzahl der Impulse direkt am Gerät über das Display einstellen.&lt;br /&gt;
&lt;br /&gt;
== Logging/Graph. Darstellung ==&lt;br /&gt;
[[Datei:PlotStromverbrauchProStunde.png|mini|400px|rechts|Beispiel der graph. Darstellung]]&lt;br /&gt;
Der Zähler wird fortlaufend aufaddiert. Mit der delta-Funktion von SVG-Plot können die Verbräuche sehr gut visualisiert werden. &lt;br /&gt;
Beispiel Stromzähler:&lt;br /&gt;
&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Stündlicher Stromverbrauch | aktuell: $data{currval1} ($data{min1} / $data{avg1} / $data{max1}) kWh&#039;&lt;br /&gt;
 set ytics &lt;br /&gt;
 set y2tics &lt;br /&gt;
 set grid ytics&lt;br /&gt;
 set ylabel &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 #FileLog 4:CUL_HM_HM_ES_TX_WM_353594.kWh\x3a:0:delta-h&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Line 1&#039; ls l0 lw 2 with bars&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo ==&lt;br /&gt;
Seit dem FHEM Update vom 06.03.2016 werden bei Neueinrichtung mit Autocreate 2 Kanäle angelegt. Dies entspricht der Firmware Revision 1.1:&lt;br /&gt;
* _IEC_01&lt;br /&gt;
Im Gas-Modus werden hier die Werte geliefert.&lt;br /&gt;
Im IR-Modus kommen seit R12555 vom 12.11.2016 hier die Zähl-Werte Energiewerte an, die auch im Status von IEC02 gezeigt werden.&lt;br /&gt;
state enthält dabei den Wert des readings energy. Möchte man hier z.B. die im letzten Zeitfenster gemessene Leistung anzeigen lassen, reading power, so hilft das Attribut stateformat&lt;br /&gt;
&amp;lt;code&amp;gt;{sprintf(&amp;quot;P: %.1f W&amp;quot;, ReadingsVal($name,&amp;quot;power&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* _IEC_02&lt;br /&gt;
&lt;br /&gt;
== Firmwareupdate ==&lt;br /&gt;
Das Gerät lässt sich in den Updatemodus versetzen, im dem die Batterien zunächst entfernt, dann beim Einsetzen die Anlerntaste gedrückt bleibt. die Leuchtdiode blinkt dann rot im schnellen Takt. Das FHEM-Kommando zum Senden der Firmware per &amp;lt;code&amp;gt;set &amp;lt;devicename&amp;gt; fwUpdate &amp;lt;Firmwaredatei.eq3&amp;gt;&amp;lt;/code&amp;gt; muss vor dem Einlegen der Batterie (+ &amp;quot;&amp;gt;&amp;quot; Taste) aufgegeben  werden. Erfolgt zum Zeitpunkt des Anstartens im Updatemodus keine Sendung der Firmware wird der Zählersensor normal gebootet. Die Meldung &amp;lt;code&amp;gt; &amp;lt;devicename&amp;gt; fwUpdate: fail:notInBootLoader&amp;lt;/code&amp;gt; im Filelog erscheint, wenn das FHEM fwUpdate Kommando &#039;&#039;zu spät&#039;&#039; gesendet wurde.&lt;br /&gt;
&lt;br /&gt;
Der Update dauert etwa eine Minute. Während des Updates blinkt die Diode rot in kurzen Intervallen.&lt;br /&gt;
Nach erfolgreichen Update muss der Sensor auf die Werkseinstellungen zurückgesetzt (&amp;quot;&amp;gt;&amp;quot; Taste 4 Sekunden drücken (Display zeigt reS), kurz warten, &amp;quot;&amp;gt;&amp;quot; noch mal 4 Sekunden drücken - Zählersensor rebootet), aus der FHEM Konfiguration entfernt und neu angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Reset nicht durchgeführt wird, kommt vom Sensor immer die Fehlermeldung: einmal langes und drei mal kurzes rotes Blinken (Sitz des Auslesekopfes prüfen). Diese Meldung ist in diesem Zusammenhang ziemlich irreführend.&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist im changelog.txt file der Firmware unvollständig beschrieben, da hier ein Update an der CCU vorausgesetzt wird und die CCU die Firmware wohl automatisch sendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Handbuch [http://files.elv.de/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf]&lt;br /&gt;
* Produktseite ELV: [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html] &lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,32827.msg252161.html#msg252161]&lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,30936.msg234877.html#msg234877]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18237</id>
		<title>HM-ES-TX-WM Zählersensor für Strom- und Gaszähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18237"/>
		<updated>2017-01-02T14:42:05Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-EM-TX-WM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Zählersensor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Powersensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868&amp;amp;nbsp;MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=6 V&lt;br /&gt;
|HWPowerConsumption=30 mA&lt;br /&gt;
|HWPoweredBy=4 Batterien LR6/AA/Mignon&lt;br /&gt;
|HWSize=68x105x30mm&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;
Der Zählersensor ist ein Datenerfassungssystem, das den Energieverbräuche (Strom, Gas) direkt am Zähler erfasst und in FHEM als laufender Saldo und als Momentanwerte verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gewicht: 195 g (inkl. 4 LR6/Mignon/AA-Batterien)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsszenarien ==&lt;br /&gt;
Mit den erfassten und gesammelten Daten lassen sich Aktionen beim Erreichen bestimmter Schwellwerte auslösen, Verbrauchs- und Kostenstatistiken erstellen sowie beliebige weitere Abhängigkeiten bilden. Durch die Funkdatenübertragung sowie den Batteriebetrieb (1 bis 2 Jahre Betriebsdauer verspricht der Hersteller mit einem Satz) ist die Installation denkbar einfach und erfordert lediglich beim Anbringen der Leseeinheit Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2015 hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es &lt;br /&gt;
* einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben),&lt;br /&gt;
* LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie &lt;br /&gt;
* BK-G4-Gaszähler von Elster-Kromschröder (die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird)&lt;br /&gt;
gibt. Es ist laut Hersteller [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html ELV] nur der Bausatz verfügbar. Ein Fertiggerät ist aktuell nicht geplant.&lt;br /&gt;
&lt;br /&gt;
Die Zähler werden mit rückstandslos entfernbaren Klebepads angebracht.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
 &#039;&#039;&#039;list:        register | range              | peer     | description&#039;&#039;&#039; &lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central &lt;br /&gt;
   1: mtrConstGas      |   0 to 655.36      |          | constant gas &lt;br /&gt;
   1: mtrConstIr       |   0 to 65536       |          | constant IR &lt;br /&gt;
   1: mtrConstLed      |   0 to 65536       |          | constant led &lt;br /&gt;
   1: mtrSensIr        | -99 to 99          |          | sensiblity IR &lt;br /&gt;
   1: mtrType          |     literal        |          | type of measurement options:LED,gas,unknown,IR &lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellen Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass alle drei Minuten der &#039;&#039;zuletzt bekannte Wert&#039;&#039; gesendet wird. Das heißt im Besonderen:&lt;br /&gt;
&lt;br /&gt;
* Sollten innerhalb der drei Minuten mehrfach Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation der Impulse (Mittelwert, Summe, …) statt.&lt;br /&gt;
* Sollten innerhalb der drei Minuten keinerlei Impulse auftreten, wird dennoch der zuletzt bekannte Leistungswert gesendet, auch wenn er mehrere Minuten/Stunden/Tage alt ist.&lt;br /&gt;
&lt;br /&gt;
Der state des Devices zeigt den letzten Übertragungsstatus an das Device, das Geräte unterstützt keinen Burst. D.h. einen an das Gerät abgesetzten Befehl z.B. getConfig oder einstellen von Zählerkonstanten sollte man möglichst am Geräte bestätigen, sonst könnte es sein, dass ein ACK zu spät zurück kommt und man sich anschließend im state über ein NACK wundert. &lt;br /&gt;
&lt;br /&gt;
Scheinbar gibt es für das reading energy bei 838860.7 einen Zählerüberlauf. [http://forum.fhem.de/index.php/topic,32827.msg270012.html#msg270012]&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Sensor wird mit einem FHEM im Update-Stand vom (mindestens) 7.2.2015 funktionsfähig eingebunden (getestet in der Variante mit Ferraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading &#039;&#039;energy&#039;&#039; die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&lt;br /&gt;
&lt;br /&gt;
Für die perfekte Konfiguration wird auf die Seite &amp;quot;[[Heizleistung und Gasverbrauch]]&amp;quot; verwiesen, wo eine vollständige Lösung für die Umrechnung von Gasverbrauch in kW/h, Graphen und Hilfsprogramme vorgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
 &#039;&#039;&#039;Reading:       |Beispiel&#039;&#039;&#039;   &lt;br /&gt;
 D-firmware     |1.0&lt;br /&gt;
 D-serialNr     |MEQ0025452 &lt;br /&gt;
 battery        |ok&lt;br /&gt;
 boot           |off &lt;br /&gt;
 current        |0 &lt;br /&gt;
 eState         |E: 6199.9 P: 1713 I: 0 U: 0 f: 50 &lt;br /&gt;
 energy         |6199.9 &lt;br /&gt;
 energyOffset   |84413.2&lt;br /&gt;
 frequency      |50 &lt;br /&gt;
 power          |1713 &lt;br /&gt;
 powerOn        |2015-03-26 14:57:48&lt;br /&gt;
 voltage        |0&lt;br /&gt;
&lt;br /&gt;
=== Events Auszug ===&lt;br /&gt;
 &#039;&#039;&#039;Event     |Beispielswert&#039;&#039;&#039;&lt;br /&gt;
 battery*  |ok&lt;br /&gt;
 energy    |10186.6&lt;br /&gt;
 power     |283&lt;br /&gt;
 current   |0&lt;br /&gt;
 voltage   |0&lt;br /&gt;
 frequency |50&lt;br /&gt;
 eState    |E: 10186.6 P: 283 I: 0 U: 0 f: 50&lt;br /&gt;
 boot      |off&lt;br /&gt;
&lt;br /&gt;
Ein battery-Event wird nicht zyklisch getriggert. Erst wenn die Batterie tatsächlich leer ist, wird eine entsprechende Meldung vom Gerät selber gesendet und ein battery-Event getriggert (battery: low).&lt;br /&gt;
&lt;br /&gt;
Mit einem Userreading lässt sich die Angabe aus &#039;&#039;energy&#039;&#039; (zum Beispiel für einen Stromzähler (Wh)) in die auf dem Zähler übliche Angabe kWh umrechnen und zugleich mit dem Aufaddieren des Unterschieds beim Start (das Zählermodul beginnt ja mit 0 Wh, während der Zähler meist schon einige Jahre auf der &amp;quot;Rolle&amp;quot; hat) die Angaben gleichziehen:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;lt;DeviceName&amp;gt;&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Nach dem Erkennen durch [[autocreate]] wird der Zählersensor mit diesen Angaben eingebunden:&lt;br /&gt;
&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 IODev CUL_0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actCycle 000:10&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actStatus alive&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 expert 2_full&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 firmware 1.0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 subType powerSensor&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_01 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 icon measure_power&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 peerIDs &lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_02 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_02 model HM-ES-TX-WM&lt;br /&gt;
&lt;br /&gt;
Die Übertragung der Messwerte erfolgt in Kanal 01 (hier: &amp;quot;CUL_HM_HM_ES_TX_WM_353594_IEC_01&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb mit den verschiedenen Zählern muß eines der Readings &#039;&#039;&#039;R-mtrConst&#039;&#039;&#039;XXX auf den jeweiligen verwendeten Zähler konfiguriert werden. Z.B. kann ein Ferraris-Stromzähler 100, 150 oder 200 Umdrehungen je kWh benötigen. Dies geschieht z.B. für 150 Meldungen je Einheit für einen Ferraris-Zähler mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstIr 150&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder für einen Gaszähler auf der 1. Rolle (d.h. 1 Impuls je 0.1 m^3)&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstGas 0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Fhem bis zum Anfang November 2015 war hier ein kleiner Bug enthalten, der diesen Wert nicht akzeptierte. In diesem Fall läßt sich die Anzahl der Impulse direkt am Gerät über das Display einstellen.&lt;br /&gt;
&lt;br /&gt;
== Logging/Graph. Darstellung ==&lt;br /&gt;
[[Datei:PlotStromverbrauchProStunde.png|mini|400px|rechts|Beispiel der graph. Darstellung]]&lt;br /&gt;
Der Zähler wird fortlaufend aufaddiert. Mit der delta-Funktion von SVG-Plot können die Verbräuche sehr gut visualisiert werden. &lt;br /&gt;
Beispiel Stromzähler:&lt;br /&gt;
&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Stündlicher Stromverbrauch | aktuell: $data{currval1} ($data{min1} / $data{avg1} / $data{max1}) kWh&#039;&lt;br /&gt;
 set ytics &lt;br /&gt;
 set y2tics &lt;br /&gt;
 set grid ytics&lt;br /&gt;
 set ylabel &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 #FileLog 4:CUL_HM_HM_ES_TX_WM_353594.kWh\x3a:0:delta-h&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Line 1&#039; ls l0 lw 2 with bars&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo ==&lt;br /&gt;
Seit dem FHEM Update vom 06.03.2016 werden bei Neueinrichtung mit Autocreate 2 Kanäle angelegt. Dies entspricht der Firmware Revision 1.1:&lt;br /&gt;
* _IEC_01&lt;br /&gt;
Im Gas-Modus werden hier die Werte geliefert.&lt;br /&gt;
Im IR-Modus kommen seit R12555 vom 12.11.2016 hier die Zähl-Werte Energiewerte an, die auch im Status von IEC02 gezeigt werden.&lt;br /&gt;
state enthält dabei den Wert des readings energy. Möchte man hier z.B. die im letzten Zeitfenster gemessene Leistung anzeigen lassen, reading power, so hilft das Attribut stateformat&lt;br /&gt;
&amp;lt;code&amp;gt;{sprintf(&amp;quot;P: %.1f W&amp;quot;, ReadingsVal($name,&amp;quot;power&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* _IEC_02&lt;br /&gt;
&lt;br /&gt;
== Firmwareupdate ==&lt;br /&gt;
Das Gerät lässt sich in den Updatemodus versetzen, im dem die Batterien zunächst entfernt, dann beim Einsetzen die Anlerntaste gedrückt bleibt. die Leuchtdiode blinkt dann rot im schnellen Takt. Das FHEM-Kommando zum Senden der Firmware per &amp;lt;code&amp;gt;set &amp;lt;devicename&amp;gt; fwUpdate &amp;lt;Firmwaredatei.eq3&amp;gt;&amp;lt;/code&amp;gt; muss vor dem Einlegen der Batterie (+ &amp;quot;&amp;gt;&amp;quot; Taste) aufgegeben  werden. Erfolgt zum Zeitpunkt des Anstartens im Updatemodus keine Sendung der Firmware wird der Zählersensor normal gebootet. Die Meldung &amp;lt;code&amp;gt; &amp;lt;devicename&amp;gt; fwUpdate: fail:notInBootLoader&amp;lt;/code&amp;gt; im Filelog erscheint, wenn das FHEM fwUpdate Kommando &#039;&#039;zu spät&#039;&#039; gesendet wurde.&lt;br /&gt;
&lt;br /&gt;
Der Update dauert etwa eine Minute. Während des Updates blinkt die Diode rot in kurzen Intervallen.&lt;br /&gt;
Nach erfolgreichen Update muss der Sensor auf die Werkseinstellungen zurückgesetzt (&amp;quot;&amp;gt;&amp;quot; Taste 4 Sekunden drücken (Display zeigt reS), kurz warten, &amp;quot;&amp;gt;&amp;quot; noch mal 4 Sekunden drücken - Zählersensor rebootet), aus der FHEM Konfiguration entfernt und neu angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Reset nicht durchgeführt wird, kommt vom Sensor immer die Fehlermeldung: einmal langes und drei mal kurzes rotes Blinken (Sitz des Auslesekopfes prüfen). Diese Meldung ist in diesem Zusammenhang ziemlich irreführend.&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist im changelog.txt file der Firmware unvollständig beschrieben, da hier ein Update an der CCU vorausgesetzt wird und die CCU die Firmware wohl automatisch sendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Handbuch [http://files.elv.de/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf]&lt;br /&gt;
* Produktseite ELV: [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html] &lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,32827.msg252161.html#msg252161]&lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,30936.msg234877.html#msg234877]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18236</id>
		<title>HM-ES-TX-WM Zählersensor für Strom- und Gaszähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18236"/>
		<updated>2017-01-02T14:41:03Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: Änderung 18234 von Snowyrain (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-EM-TX-WM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Zählersensor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Powersensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868&amp;amp;nbsp;MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=6 V&lt;br /&gt;
|HWPowerConsumption=30 mA&lt;br /&gt;
|HWPoweredBy=4 Batterien LR6/AA/Mignon&lt;br /&gt;
|HWSize=68x105x30mm&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;
Der Zählersensor ist ein Datenerfassungssystem, das den Energieverbräuche (Strom, Gas) direkt am Zähler erfasst und in FHEM als laufender Saldo und als Momentanwerte verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gewicht: 195 g (inkl. 4 LR6/Mignon/AA-Batterien)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsszenarien ==&lt;br /&gt;
Mit den erfassten und gesammelten Daten lassen sich Aktionen beim Erreichen bestimmter Schwellwerte auslösen, Verbrauchs- und Kostenstatistiken erstellen sowie beliebige weitere Abhängigkeiten bilden. Durch die Funkdatenübertragung sowie den Batteriebetrieb (1 bis 2 Jahre Betriebsdauer verspricht der Hersteller mit einem Satz) ist die Installation denkbar einfach und erfordert lediglich beim Anbringen der Leseeinheit Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2015 hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es &lt;br /&gt;
* einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben),&lt;br /&gt;
* LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie &lt;br /&gt;
* BK-G4-Gaszähler von Elster-Kromschröder (die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird)&lt;br /&gt;
gibt. Es ist laut Hersteller [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html ELV] nur der Bausatz verfügbar. Ein Fertiggerät ist aktuell nicht geplant.&lt;br /&gt;
&lt;br /&gt;
Die Zähler werden mit rückstandslos entfernbaren Klebepads angebracht.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
 &#039;&#039;&#039;list:        register | range              | peer     | description&#039;&#039;&#039; &lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central &lt;br /&gt;
   1: mtrConstGas      |   0 to 655.36      |          | constant gas &lt;br /&gt;
   1: mtrConstIr       |   0 to 65536       |          | constant IR &lt;br /&gt;
   1: mtrConstLed      |   0 to 65536       |          | constant led &lt;br /&gt;
   1: mtrSensIr        | -99 to 99          |          | sensiblity IR &lt;br /&gt;
   1: mtrType          |     literal        |          | type of measurement options:LED,gas,unknown,IR &lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellen Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass alle drei Minuten der &#039;&#039;zuletzt bekannte Wert&#039;&#039; gesendet wird. Das heißt im Besonderen:&lt;br /&gt;
&lt;br /&gt;
* Sollten innerhalb der drei Minuten mehrfach Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation der Impulse (Mittelwert, Summe, …) statt.&lt;br /&gt;
* Sollten innerhalb der drei Minuten keinerlei Impulse auftreten, wird dennoch der zuletzt bekannte Leistungswert gesendet, auch wenn er mehrere Minuten/Stunden/Tage alt ist.&lt;br /&gt;
&lt;br /&gt;
Der state des Devices zeigt den letzten Übertragungsstatus an das Device, das Geräte unterstützt keinen Burst. D.h. einen an das Gerät abgesetzten Befehl z.B. getConfig oder einstellen von Zählerkonstanten sollte man möglichst am Geräte bestätigen, sonst könnte es sein, dass ein ACK zu spät zurück kommt und man sich anschließend im state über ein NACK wundert. &lt;br /&gt;
&lt;br /&gt;
Scheinbar gibt es für das reading energy bei 838860.7 einen Zählerüberlauf. [http://forum.fhem.de/index.php/topic,32827.msg270012.html#msg270012]&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Sensor wird mit einem FHEM im Update-Stand vom (mindestens) 7.2.2015 funktionsfähig eingebunden (getestet in der Variante mit Ferraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading &#039;&#039;energy&#039;&#039; die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&lt;br /&gt;
&lt;br /&gt;
Für die perfekte Konfiguration wird auf die Seite &amp;quot;[[Heizleistung und Gasverbrauch]]&amp;quot; verwiesen, wo eine vollständige Lösung für die Umrechnung von Gasverbrauch in kW/h, Graphen und Hilfsprogramme vorgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
 &#039;&#039;&#039;Reading:       |Beispiel&#039;&#039;&#039;   &lt;br /&gt;
 D-firmware     |1.0&lt;br /&gt;
 D-serialNr     |MEQ0025452 &lt;br /&gt;
 battery        |ok&lt;br /&gt;
 boot           |off &lt;br /&gt;
 current        |0 &lt;br /&gt;
 eState         |E: 6199.9 P: 1713 I: 0 U: 0 f: 50 &lt;br /&gt;
 energy         |6199.9 &lt;br /&gt;
 energyOffset   |84413.2&lt;br /&gt;
 frequency      |50 &lt;br /&gt;
 power          |1713 &lt;br /&gt;
 powerOn        |2015-03-26 14:57:48&lt;br /&gt;
 voltage        |0&lt;br /&gt;
&lt;br /&gt;
=== Events Auszug ===&lt;br /&gt;
 &#039;&#039;&#039;Event     |Beispielswert&#039;&#039;&#039;&lt;br /&gt;
 battery*  |ok&lt;br /&gt;
 energy    |10186.6&lt;br /&gt;
 power     |283&lt;br /&gt;
 current   |0&lt;br /&gt;
 voltage   |0&lt;br /&gt;
 frequency |50&lt;br /&gt;
 eState    |E: 10186.6 P: 283 I: 0 U: 0 f: 50&lt;br /&gt;
 boot      |off&lt;br /&gt;
&lt;br /&gt;
Ein battery-Event wird nicht zyklisch getriggert. Erst wenn die Batterie tatsächlich leer ist, wird eine entsprechende Meldung vom Gerät selber gesendet und ein battery-Event getriggert (battery: low).&lt;br /&gt;
&lt;br /&gt;
Mit einem Userreading lässt sich die Angabe aus &#039;&#039;energy&#039;&#039; (zum Beispiel für einen Stromzähler (Wh)) in die auf dem Zähler übliche Angabe kWh umrechnen und zugleich mit dem Aufaddieren des Unterschieds beim Start (das Zählermodul beginnt ja mit 0 Wh, während der Zähler meist schon einige Jahre auf der &amp;quot;Rolle&amp;quot; hat) die Angaben gleichziehen:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;lt;DeviceName&amp;gt;&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Nach dem Erkennen durch [[autocreate]] wird der Zählersensor mit diesen Angaben eingebunden:&lt;br /&gt;
&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 IODev CUL_0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actCycle 000:10&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actStatus alive&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 expert 2_full&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 firmware 1.0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 subType powerSensor&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_01 CUL_HM 4D0DC201&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 icon measure_power&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 peerIDs &lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_02 CUL_HM 4D0DC202&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_02 model HM-ES-TX-WM&lt;br /&gt;
&lt;br /&gt;
Die Übertragung der Messwerte erfolgt in Kanal 01 (hier: &amp;quot;CUL_HM_HM_ES_TX_WM_353594_IEC_01&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb mit den verschiedenen Zählern muß eines der Readings &#039;&#039;&#039;R-mtrConst&#039;&#039;&#039;XXX auf den jeweiligen verwendeten Zähler konfiguriert werden. Z.B. kann ein Ferraris-Stromzähler 100, 150 oder 200 Umdrehungen je kWh benötigen. Dies geschieht z.B. für 150 Meldungen je Einheit für einen Ferraris-Zähler mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstIr 150&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder für einen Gaszähler auf der 1. Rolle (d.h. 1 Impuls je 0.1 m^3)&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstGas 0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Fhem bis zum Anfang November 2015 war hier ein kleiner Bug enthalten, der diesen Wert nicht akzeptierte. In diesem Fall läßt sich die Anzahl der Impulse direkt am Gerät über das Display einstellen.&lt;br /&gt;
&lt;br /&gt;
== Logging/Graph. Darstellung ==&lt;br /&gt;
[[Datei:PlotStromverbrauchProStunde.png|mini|400px|rechts|Beispiel der graph. Darstellung]]&lt;br /&gt;
Der Zähler wird fortlaufend aufaddiert. Mit der delta-Funktion von SVG-Plot können die Verbräuche sehr gut visualisiert werden. &lt;br /&gt;
Beispiel Stromzähler:&lt;br /&gt;
&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Stündlicher Stromverbrauch | aktuell: $data{currval1} ($data{min1} / $data{avg1} / $data{max1}) kWh&#039;&lt;br /&gt;
 set ytics &lt;br /&gt;
 set y2tics &lt;br /&gt;
 set grid ytics&lt;br /&gt;
 set ylabel &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 #FileLog 4:CUL_HM_HM_ES_TX_WM_353594.kWh\x3a:0:delta-h&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Line 1&#039; ls l0 lw 2 with bars&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo ==&lt;br /&gt;
Seit dem FHEM Update vom 06.03.2016 werden bei Neueinrichtung mit Autocreate 2 Kanäle angelegt. Dies entspricht der Firmware Revision 1.1:&lt;br /&gt;
* _IEC_01&lt;br /&gt;
Im Gas-Modus werden hier die Werte geliefert.&lt;br /&gt;
Im IR-Modus kommen seit R12555 vom 12.11.2016 hier die Zähl-Werte Energiewerte an, die auch im Status von IEC02 gezeigt werden.&lt;br /&gt;
state enthält dabei den Wert des readings energy. Möchte man hier z.B. die im letzten Zeitfenster gemessene Leistung anzeigen lassen, reading power, so hilft das Attribut stateformat&lt;br /&gt;
&amp;lt;code&amp;gt;{sprintf(&amp;quot;P: %.1f W&amp;quot;, ReadingsVal($name,&amp;quot;power&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* _IEC_02&lt;br /&gt;
&lt;br /&gt;
== Firmwareupdate ==&lt;br /&gt;
Das Gerät lässt sich in den Updatemodus versetzen, im dem die Batterien zunächst entfernt, dann beim Einsetzen die Anlerntaste gedrückt bleibt. die Leuchtdiode blinkt dann rot im schnellen Takt. Das FHEM-Kommando zum Senden der Firmware per &amp;lt;code&amp;gt;set &amp;lt;devicename&amp;gt; fwUpdate &amp;lt;Firmwaredatei.eq3&amp;gt;&amp;lt;/code&amp;gt; muss vor dem Einlegen der Batterie (+ &amp;quot;&amp;gt;&amp;quot; Taste) aufgegeben  werden. Erfolgt zum Zeitpunkt des Anstartens im Updatemodus keine Sendung der Firmware wird der Zählersensor normal gebootet. Die Meldung &amp;lt;code&amp;gt; &amp;lt;devicename&amp;gt; fwUpdate: fail:notInBootLoader&amp;lt;/code&amp;gt; im Filelog erscheint, wenn das FHEM fwUpdate Kommando &#039;&#039;zu spät&#039;&#039; gesendet wurde.&lt;br /&gt;
&lt;br /&gt;
Der Update dauert etwa eine Minute. Während des Updates blinkt die Diode rot in kurzen Intervallen.&lt;br /&gt;
Nach erfolgreichen Update muss der Sensor auf die Werkseinstellungen zurückgesetzt (&amp;quot;&amp;gt;&amp;quot; Taste 4 Sekunden drücken (Display zeigt reS), kurz warten, &amp;quot;&amp;gt;&amp;quot; noch mal 4 Sekunden drücken - Zählersensor rebootet), aus der FHEM Konfiguration entfernt und neu angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Reset nicht durchgeführt wird, kommt vom Sensor immer die Fehlermeldung: einmal langes und drei mal kurzes rotes Blinken (Sitz des Auslesekopfes prüfen). Diese Meldung ist in diesem Zusammenhang ziemlich irreführend.&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist im changelog.txt file der Firmware unvollständig beschrieben, da hier ein Update an der CCU vorausgesetzt wird und die CCU die Firmware wohl automatisch sendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Handbuch [http://files.elv.de/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf]&lt;br /&gt;
* Produktseite ELV: [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html] &lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,32827.msg252161.html#msg252161]&lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,30936.msg234877.html#msg234877]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18234</id>
		<title>HM-ES-TX-WM Zählersensor für Strom- und Gaszähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18234"/>
		<updated>2017-01-02T14:40:13Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-EM-TX-WM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Zählersensor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Powersensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868&amp;amp;nbsp;MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=6 V&lt;br /&gt;
|HWPowerConsumption=30 mA&lt;br /&gt;
|HWPoweredBy=4 Batterien LR6/AA/Mignon&lt;br /&gt;
|HWSize=68x105x30mm&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;
Der Zählersensor ist ein Datenerfassungssystem, das den Energieverbräuche (Strom, Gas) direkt am Zähler erfasst und in FHEM als laufender Saldo und als Momentanwerte verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gewicht: 195 g (inkl. 4 LR6/Mignon/AA-Batterien)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsszenarien ==&lt;br /&gt;
Mit den erfassten und gesammelten Daten lassen sich Aktionen beim Erreichen bestimmter Schwellwerte auslösen, Verbrauchs- und Kostenstatistiken erstellen sowie beliebige weitere Abhängigkeiten bilden. Durch die Funkdatenübertragung sowie den Batteriebetrieb (1 bis 2 Jahre Betriebsdauer verspricht der Hersteller mit einem Satz) ist die Installation denkbar einfach und erfordert lediglich beim Anbringen der Leseeinheit Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2015 hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es &lt;br /&gt;
* einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben),&lt;br /&gt;
* LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie &lt;br /&gt;
* BK-G4-Gaszähler von Elster-Kromschröder (die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird)&lt;br /&gt;
gibt. Es ist laut Hersteller [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html ELV] nur der Bausatz verfügbar. Ein Fertiggerät ist aktuell nicht geplant.&lt;br /&gt;
&lt;br /&gt;
Die Zähler werden mit rückstandslos entfernbaren Klebepads angebracht.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
 &#039;&#039;&#039;list:        register | range              | peer     | description&#039;&#039;&#039; &lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central &lt;br /&gt;
   1: mtrConstGas      |   0 to 655.36      |          | constant gas &lt;br /&gt;
   1: mtrConstIr       |   0 to 65536       |          | constant IR &lt;br /&gt;
   1: mtrConstLed      |   0 to 65536       |          | constant led &lt;br /&gt;
   1: mtrSensIr        | -99 to 99          |          | sensiblity IR &lt;br /&gt;
   1: mtrType          |     literal        |          | type of measurement options:LED,gas,unknown,IR &lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellen Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass alle drei Minuten der &#039;&#039;zuletzt bekannte Wert&#039;&#039; gesendet wird. Das heißt im Besonderen:&lt;br /&gt;
&lt;br /&gt;
* Sollten innerhalb der drei Minuten mehrfach Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation der Impulse (Mittelwert, Summe, …) statt.&lt;br /&gt;
* Sollten innerhalb der drei Minuten keinerlei Impulse auftreten, wird dennoch der zuletzt bekannte Leistungswert gesendet, auch wenn er mehrere Minuten/Stunden/Tage alt ist.&lt;br /&gt;
&lt;br /&gt;
Der state des Devices zeigt den letzten Übertragungsstatus an das Device, das Geräte unterstützt keinen Burst. D.h. einen an das Gerät abgesetzten Befehl z.B. getConfig oder einstellen von Zählerkonstanten sollte man möglichst am Geräte bestätigen, sonst könnte es sein, dass ein ACK zu spät zurück kommt und man sich anschließend im state über ein NACK wundert. &lt;br /&gt;
&lt;br /&gt;
Scheinbar gibt es für das reading energy bei 838860.7 einen Zählerüberlauf. [http://forum.fhem.de/index.php/topic,32827.msg270012.html#msg270012]&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Sensor wird mit einem FHEM im Update-Stand vom (mindestens) 7.2.2015 funktionsfähig eingebunden (getestet in der Variante mit Ferraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading &#039;&#039;energy&#039;&#039; die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&lt;br /&gt;
&lt;br /&gt;
Für die perfekte Konfiguration wird auf die Seite &amp;quot;[[Heizleistung und Gasverbrauch]]&amp;quot; verwiesen, wo eine vollständige Lösung für die Umrechnung von Gasverbrauch in kW/h, Graphen und Hilfsprogramme vorgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
 &#039;&#039;&#039;Reading:       |Beispiel&#039;&#039;&#039;   &lt;br /&gt;
 D-firmware     |1.0&lt;br /&gt;
 D-serialNr     |MEQ0025452 &lt;br /&gt;
 battery        |ok&lt;br /&gt;
 boot           |off &lt;br /&gt;
 current        |0 &lt;br /&gt;
 eState         |E: 6199.9 P: 1713 I: 0 U: 0 f: 50 &lt;br /&gt;
 energy         |6199.9 &lt;br /&gt;
 energyOffset   |84413.2&lt;br /&gt;
 frequency      |50 &lt;br /&gt;
 power          |1713 &lt;br /&gt;
 powerOn        |2015-03-26 14:57:48&lt;br /&gt;
 voltage        |0&lt;br /&gt;
&lt;br /&gt;
=== Events Auszug ===&lt;br /&gt;
 &#039;&#039;&#039;Event     |Beispielswert&#039;&#039;&#039;&lt;br /&gt;
 battery*  |ok&lt;br /&gt;
 energy    |10186.6&lt;br /&gt;
 power     |283&lt;br /&gt;
 current   |0&lt;br /&gt;
 voltage   |0&lt;br /&gt;
 frequency |50&lt;br /&gt;
 eState    |E: 10186.6 P: 283 I: 0 U: 0 f: 50&lt;br /&gt;
 boot      |off&lt;br /&gt;
&lt;br /&gt;
Ein battery-Event wird nicht zyklisch getriggert. Erst wenn die Batterie tatsächlich leer ist, wird eine entsprechende Meldung vom Gerät selber gesendet und ein battery-Event getriggert (battery: low).&lt;br /&gt;
&lt;br /&gt;
Mit einem Userreading lässt sich die Angabe aus &#039;&#039;energy&#039;&#039; (zum Beispiel für einen Stromzähler (Wh)) in die auf dem Zähler übliche Angabe kWh umrechnen und zugleich mit dem Aufaddieren des Unterschieds beim Start (das Zählermodul beginnt ja mit 0 Wh, während der Zähler meist schon einige Jahre auf der &amp;quot;Rolle&amp;quot; hat) die Angaben gleichziehen:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;lt;DeviceName&amp;gt;&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Nach dem Erkennen durch [[autocreate]] wird der Zählersensor mit diesen Angaben eingebunden:&lt;br /&gt;
&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 IODev CUL_0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actCycle 000:10&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actStatus alive&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 expert 2_full&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 firmware 1.0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 subType powerSensor&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_01 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 icon measure_power&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 peerIDs &lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_02 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_02 model HM-ES-TX-WM&lt;br /&gt;
&lt;br /&gt;
Die Übertragung der Messwerte erfolgt in Kanal 01 (hier: &amp;quot;CUL_HM_HM_ES_TX_WM_353594_IEC_01&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb mit den verschiedenen Zählern muß eines der Readings &#039;&#039;&#039;R-mtrConst&#039;&#039;&#039;XXX auf den jeweiligen verwendeten Zähler konfiguriert werden. Z.B. kann ein Ferraris-Stromzähler 100, 150 oder 200 Umdrehungen je kWh benötigen. Dies geschieht z.B. für 150 Meldungen je Einheit für einen Ferraris-Zähler mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstIr 150&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder für einen Gaszähler auf der 1. Rolle (d.h. 1 Impuls je 0.1 m^3)&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstGas 0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Fhem bis zum Anfang November 2015 war hier ein kleiner Bug enthalten, der diesen Wert nicht akzeptierte. In diesem Fall läßt sich die Anzahl der Impulse direkt am Gerät über das Display einstellen.&lt;br /&gt;
&lt;br /&gt;
== Logging/Graph. Darstellung ==&lt;br /&gt;
[[Datei:PlotStromverbrauchProStunde.png|mini|400px|rechts|Beispiel der graph. Darstellung]]&lt;br /&gt;
Der Zähler wird fortlaufend aufaddiert. Mit der delta-Funktion von SVG-Plot können die Verbräuche sehr gut visualisiert werden. &lt;br /&gt;
Beispiel Stromzähler:&lt;br /&gt;
&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Stündlicher Stromverbrauch | aktuell: $data{currval1} ($data{min1} / $data{avg1} / $data{max1}) kWh&#039;&lt;br /&gt;
 set ytics &lt;br /&gt;
 set y2tics &lt;br /&gt;
 set grid ytics&lt;br /&gt;
 set ylabel &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 #FileLog 4:CUL_HM_HM_ES_TX_WM_353594.kWh\x3a:0:delta-h&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Line 1&#039; ls l0 lw 2 with bars&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo ==&lt;br /&gt;
Seit dem FHEM Update vom 06.03.2016 werden bei Neueinrichtung mit Autocreate 2 Kanäle angelegt. Dies entspricht der Firmware Revision 1.1:&lt;br /&gt;
* _IEC_01&lt;br /&gt;
Im Gas-Modus werden hier die Werte geliefert.&lt;br /&gt;
Im IR-Modus kommen seit R12555 vom 12.11.2016 hier die Zähl-Werte Energiewerte an, die auch im Status von IEC02 gezeigt werden.&lt;br /&gt;
state enthält dabei den Wert des readings energy. Möchte man hier z.B. die im letzten Zeitfenster gemessene Leistung anzeigen lassen, reading power, so hilft das Attribut stateformat&lt;br /&gt;
&amp;lt;code&amp;gt;{sprintf(&amp;quot;P: %.1f W&amp;quot;, ReadingsVal($name,&amp;quot;power&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* _IEC_02&lt;br /&gt;
&lt;br /&gt;
== Firmwareupdate ==&lt;br /&gt;
Das Gerät lässt sich in den Updatemodus versetzen, im dem die Batterien zunächst entfernt, dann beim Einsetzen die Anlerntaste gedrückt bleibt. die Leuchtdiode blinkt dann rot im schnellen Takt. Das FHEM-Kommando zum Senden der Firmware per &amp;lt;code&amp;gt;set &amp;lt;devicename&amp;gt; fwUpdate &amp;lt;Firmwaredatei.eq3&amp;gt;&amp;lt;/code&amp;gt; muss vor dem Einlegen der Batterie (+ &amp;quot;&amp;gt;&amp;quot; Taste) aufgegeben  werden. Erfolgt zum Zeitpunkt des Anstartens im Updatemodus keine Sendung der Firmware wird der Zählersensor normal gebootet. Die Meldung &amp;lt;code&amp;gt; &amp;lt;devicename&amp;gt; fwUpdate: fail:notInBootLoader&amp;lt;/code&amp;gt; im Filelog erscheint, wenn das FHEM fwUpdate Kommando &#039;&#039;zu spät&#039;&#039; gesendet wurde.&lt;br /&gt;
&lt;br /&gt;
Der Update dauert etwa eine Minute. Während des Updates blinkt die Diode rot in kurzen Intervallen.&lt;br /&gt;
Nach erfolgreichen Update muss der Sensor auf die Werkseinstellungen zurückgesetzt (&amp;quot;&amp;gt;&amp;quot; Taste 4 Sekunden drücken (Display zeigt reS), kurz warten, &amp;quot;&amp;gt;&amp;quot; noch mal 4 Sekunden drücken - Zählersensor rebootet), aus der FHEM Konfiguration entfernt und neu angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Reset nicht durchgeführt wird, kommt vom Sensor immer die Fehlermeldung: einmal langes und drei mal kurzes rotes Blinken (Sitz des Auslesekopfes prüfen). Diese Meldung ist in diesem Zusammenhang ziemlich irreführend.&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist im changelog.txt file der Firmware unvollständig beschrieben, da hier ein Update an der CCU vorausgesetzt wird und die CCU die Firmware wohl automatisch sendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Handbuch [http://files.elv.de/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf]&lt;br /&gt;
* Produktseite ELV: [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html] &lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,32827.msg252161.html#msg252161]&lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,30936.msg234877.html#msg234877]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18233</id>
		<title>HM-ES-TX-WM Zählersensor für Strom- und Gaszähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=18233"/>
		<updated>2017-01-02T14:39:48Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-EM-TX-WM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Zählersensor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Powersensor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868&amp;amp;nbsp;MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=6 V&lt;br /&gt;
|HWPowerConsumption=30 mA&lt;br /&gt;
|HWPoweredBy=4 Batterien LR6/AA/Mignon&lt;br /&gt;
|HWSize=68x105x30mm&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;
Der Zählersensor ist ein Datenerfassungssystem, das den Energieverbräuche (Strom, Gas) direkt am Zähler erfasst und in FHEM als laufender Saldo und als Momentanwerte verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gewicht: 195 g (inkl. 4 LR6/Mignon/AA-Batterien)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsszenarien ==&lt;br /&gt;
Mit den erfassten und gesammelten Daten lassen sich Aktionen beim Erreichen bestimmter Schwellwerte auslösen, Verbrauchs- und Kostenstatistiken erstellen sowie beliebige weitere Abhängigkeiten bilden. Durch die Funkdatenübertragung sowie den Batteriebetrieb (1 bis 2 Jahre Betriebsdauer verspricht der Hersteller mit einem Satz) ist die Installation denkbar einfach und erfordert lediglich beim Anbringen der Leseeinheit Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2015 hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es &lt;br /&gt;
* einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben),&lt;br /&gt;
* LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie &lt;br /&gt;
* BK-G4-Gaszähler von Elster-Kromschröder (die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird)&lt;br /&gt;
gibt. Es ist laut Hersteller [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html ELV] nur der Bausatz verfügbar. Ein Fertiggerät ist aktuell nicht geplant.&lt;br /&gt;
&lt;br /&gt;
Die Zähler werden mit rückstandslos entfernbaren Klebepads angebracht.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
 &#039;&#039;&#039;list:        register | range              | peer     | description&#039;&#039;&#039; &lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central &lt;br /&gt;
   1: mtrConstGas      |   0 to 655.36      |          | constant gas &lt;br /&gt;
   1: mtrConstIr       |   0 to 65536       |          | constant IR &lt;br /&gt;
   1: mtrConstLed      |   0 to 65536       |          | constant led &lt;br /&gt;
   1: mtrSensIr        | -99 to 99          |          | sensiblity IR &lt;br /&gt;
   1: mtrType          |     literal        |          | type of measurement options:LED,gas,unknown,IR &lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellen Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass alle drei Minuten der &#039;&#039;zuletzt bekannte Wert&#039;&#039; gesendet wird. Das heißt im Besonderen:&lt;br /&gt;
&lt;br /&gt;
* Sollten innerhalb der drei Minuten mehrfach Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation der Impulse (Mittelwert, Summe, …) statt.&lt;br /&gt;
* Sollten innerhalb der drei Minuten keinerlei Impulse auftreten, wird dennoch der zuletzt bekannte Leistungswert gesendet, auch wenn er mehrere Minuten/Stunden/Tage alt ist.&lt;br /&gt;
&lt;br /&gt;
Der state des Devices zeigt den letzten Übertragungsstatus an das Device, das Geräte unterstützt keinen Burst. D.h. einen an das Gerät abgesetzten Befehl z.B. getConfig oder einstellen von Zählerkonstanten sollte man möglichst am Geräte bestätigen, sonst könnte es sein, dass ein ACK zu spät zurück kommt und man sich anschließend im state über ein NACK wundert. &lt;br /&gt;
&lt;br /&gt;
Scheinbar gibt es für das reading energy bei 838860.7 einen Zählerüberlauf. [http://forum.fhem.de/index.php/topic,32827.msg270012.html#msg270012]&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Der Sensor wird mit einem FHEM im Update-Stand vom (mindestens) 7.2.2015 funktionsfähig eingebunden (getestet in der Variante mit Ferraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading &#039;&#039;energy&#039;&#039; die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&lt;br /&gt;
&lt;br /&gt;
Für die perfekte Konfiguration wird auf die Seite &amp;quot;[[Heizleistung und Gasverbrauch]]&amp;quot; verwiesen, wo eine vollständige Lösung für die Umrechnung von Gasverbrauch in kW/h, Graphen und Hilfsprogramme vorgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
 &#039;&#039;&#039;Reading:       |Beispiel&#039;&#039;&#039;   &lt;br /&gt;
 D-firmware     |1.0&lt;br /&gt;
 D-serialNr     |MEQ0025452 &lt;br /&gt;
 battery        |ok&lt;br /&gt;
 boot           |off &lt;br /&gt;
 current        |0 &lt;br /&gt;
 eState         |E: 6199.9 P: 1713 I: 0 U: 0 f: 50 &lt;br /&gt;
 energy         |6199.9 &lt;br /&gt;
 energyOffset   |84413.2&lt;br /&gt;
 frequency      |50 &lt;br /&gt;
 power          |1713 &lt;br /&gt;
 powerOn        |2015-03-26 14:57:48&lt;br /&gt;
 voltage        |0&lt;br /&gt;
&lt;br /&gt;
=== Events Auszug ===&lt;br /&gt;
 &#039;&#039;&#039;Event     |Beispielswert&#039;&#039;&#039;&lt;br /&gt;
 battery*  |ok&lt;br /&gt;
 energy    |10186.6&lt;br /&gt;
 power     |283&lt;br /&gt;
 current   |0&lt;br /&gt;
 voltage   |0&lt;br /&gt;
 frequency |50&lt;br /&gt;
 eState    |E: 10186.6 P: 283 I: 0 U: 0 f: 50&lt;br /&gt;
 boot      |off&lt;br /&gt;
&lt;br /&gt;
Ein battery-Event wird nicht zyklisch getriggert. Erst wenn die Batterie tatsächlich leer ist, wird eine entsprechende Meldung vom Gerät selber gesendet und ein battery-Event getriggert (battery: low).&lt;br /&gt;
&lt;br /&gt;
Mit einem Userreading lässt sich die Angabe aus &#039;&#039;energy&#039;&#039; (zum Beispiel für einen Stromzähler (Wh)) in die auf dem Zähler übliche Angabe kWh umrechnen und zugleich mit dem Aufaddieren des Unterschieds beim Start (das Zählermodul beginnt ja mit 0 Wh, während der Zähler meist schon einige Jahre auf der &amp;quot;Rolle&amp;quot; hat) die Angaben gleichziehen:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;lt;DeviceName&amp;gt;&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Nach dem Erkennen durch [[autocreate]] wird der Zählersensor mit diesen Angaben eingebunden:&lt;br /&gt;
&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594 CUL_HM 353594&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 IODev CUL_0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actCycle 000:10&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 actStatus alive&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 expert 2_full&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 firmware 1.0&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594 subType powerSensor&lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_01 CUL_HM 4D0DC201&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 icon measure_power&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 model HM-ES-TX-WM&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_01 peerIDs &lt;br /&gt;
 define CUL_HM_HM_ES_TX_WM_353594_IEC_02 CUL_HM 4D0DC202&lt;br /&gt;
 attr CUL_HM_HM_ES_TX_WM_353594_IEC_02 model HM-ES-TX-WM&lt;br /&gt;
&lt;br /&gt;
Die Übertragung der Messwerte erfolgt in Kanal 01 (hier: &amp;quot;CUL_HM_HM_ES_TX_WM_353594_IEC_01&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb mit den verschiedenen Zählern muß eines der Readings &#039;&#039;&#039;R-mtrConst&#039;&#039;&#039;XXX auf den jeweiligen verwendeten Zähler konfiguriert werden. Z.B. kann ein Ferraris-Stromzähler 100, 150 oder 200 Umdrehungen je kWh benötigen. Dies geschieht z.B. für 150 Meldungen je Einheit für einen Ferraris-Zähler mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstIr 150&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder für einen Gaszähler auf der 1. Rolle (d.h. 1 Impuls je 0.1 m^3)&lt;br /&gt;
:&amp;lt;code&amp;gt;set CUL_HM_HM_ES_TX_WM_353594 regSet mtrConstGas 0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Fhem bis zum Anfang November 2015 war hier ein kleiner Bug enthalten, der diesen Wert nicht akzeptierte. In diesem Fall läßt sich die Anzahl der Impulse direkt am Gerät über das Display einstellen.&lt;br /&gt;
&lt;br /&gt;
== Logging/Graph. Darstellung ==&lt;br /&gt;
[[Datei:PlotStromverbrauchProStunde.png|mini|400px|rechts|Beispiel der graph. Darstellung]]&lt;br /&gt;
Der Zähler wird fortlaufend aufaddiert. Mit der delta-Funktion von SVG-Plot können die Verbräuche sehr gut visualisiert werden. &lt;br /&gt;
Beispiel Stromzähler:&lt;br /&gt;
&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Stündlicher Stromverbrauch | aktuell: $data{currval1} ($data{min1} / $data{avg1} / $data{max1}) kWh&#039;&lt;br /&gt;
 set ytics &lt;br /&gt;
 set y2tics &lt;br /&gt;
 set grid ytics&lt;br /&gt;
 set ylabel &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;kWh/h&amp;quot;&lt;br /&gt;
 #FileLog 4:CUL_HM_HM_ES_TX_WM_353594.kWh\x3a:0:delta-h&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Line 1&#039; ls l0 lw 2 with bars&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo ==&lt;br /&gt;
Seit dem FHEM Update vom 06.03.2016 werden bei Neueinrichtung mit Autocreate 2 Kanäle angelegt. Dies entspricht der Firmware Revision 1.1:&lt;br /&gt;
* _IEC_01&lt;br /&gt;
Im Gas-Modus werden hier die Werte geliefert.&lt;br /&gt;
Im IR-Modus kommen seit R12555 vom 12.11.2016 hier die Zähl-Werte Energiewerte an, die auch im Status von IEC02 gezeigt werden.&lt;br /&gt;
state enthält dabei den Wert des readings energy. Möchte man hier z.B. die im letzten Zeitfenster gemessene Leistung anzeigen lassen, reading power, so hilft das Attribut stateformat&lt;br /&gt;
&amp;lt;code&amp;gt;{sprintf(&amp;quot;P: %.1f W&amp;quot;, ReadingsVal($name,&amp;quot;power&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* _IEC_02&lt;br /&gt;
&lt;br /&gt;
== Firmwareupdate ==&lt;br /&gt;
Das Gerät lässt sich in den Updatemodus versetzen, im dem die Batterien zunächst entfernt, dann beim Einsetzen die Anlerntaste gedrückt bleibt. die Leuchtdiode blinkt dann rot im schnellen Takt. Das FHEM-Kommando zum Senden der Firmware per &amp;lt;code&amp;gt;set &amp;lt;devicename&amp;gt; fwUpdate &amp;lt;Firmwaredatei.eq3&amp;gt;&amp;lt;/code&amp;gt; muss vor dem Einlegen der Batterie (+ &amp;quot;&amp;gt;&amp;quot; Taste) aufgegeben  werden. Erfolgt zum Zeitpunkt des Anstartens im Updatemodus keine Sendung der Firmware wird der Zählersensor normal gebootet. Die Meldung &amp;lt;code&amp;gt; &amp;lt;devicename&amp;gt; fwUpdate: fail:notInBootLoader&amp;lt;/code&amp;gt; im Filelog erscheint, wenn das FHEM fwUpdate Kommando &#039;&#039;zu spät&#039;&#039; gesendet wurde.&lt;br /&gt;
&lt;br /&gt;
Der Update dauert etwa eine Minute. Während des Updates blinkt die Diode rot in kurzen Intervallen.&lt;br /&gt;
Nach erfolgreichen Update muss der Sensor auf die Werkseinstellungen zurückgesetzt (&amp;quot;&amp;gt;&amp;quot; Taste 4 Sekunden drücken (Display zeigt reS), kurz warten, &amp;quot;&amp;gt;&amp;quot; noch mal 4 Sekunden drücken - Zählersensor rebootet), aus der FHEM Konfiguration entfernt und neu angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Reset nicht durchgeführt wird, kommt vom Sensor immer die Fehlermeldung: einmal langes und drei mal kurzes rotes Blinken (Sitz des Auslesekopfes prüfen). Diese Meldung ist in diesem Zusammenhang ziemlich irreführend.&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist im changelog.txt file der Firmware unvollständig beschrieben, da hier ein Update an der CCU vorausgesetzt wird und die CCU die Firmware wohl automatisch sendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Handbuch [http://files.elv.de/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf]&lt;br /&gt;
* Produktseite ELV: [http://www.elv.de/homematic-zaehlersensor-strom-gas-bausatz.html] &lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,32827.msg252161.html#msg252161]&lt;br /&gt;
* Forum [http://forum.fhem.de/index.php/topic,30936.msg234877.html#msg234877]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4187</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4187"/>
		<updated>2013-12-31T16:54:56Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Wake On Lan können Computer,NAS,... eingeschaltet werden. Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden. Bei einigen Systemen steigt die Energieaufnahme im Standby bei aktiviertem WOL stark.&lt;br /&gt;
&lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In der Shell folgenden Befehl eingeben. Die MAC-Adresse muss natürlich angepasst werden das Interface (hier br-lan) eventuell auch.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake  -i br-lan 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei myUtils.pm erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 $ret .= qx(etherwake -i br-lan $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In dem FHEM-Webinterface { WakeOnLan(&#039;00:06:55:5a:53:f3&#039;);; } eingeben.&lt;br /&gt;
&lt;br /&gt;
Um auf einen Tasterdruck reagieren zu können, muss die Datei fhem.cfg ergänzt werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan(&#039;00:17:31:fa:9b:51&#039;)}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4186</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4186"/>
		<updated>2013-12-31T16:51:59Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* OpenWRT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In der Shell folgenden Befehl eingeben. Die MAC-Adresse muss natürlich angepasst werden das Interface (hier br-lan) eventuell auch.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake  -i br-lan 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei myUtils.pm erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 $ret .= qx(etherwake -i br-lan $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In dem FHEM-Webinterface { WakeOnLan(&#039;00:06:55:5a:53:f3&#039;);; } eingeben.&lt;br /&gt;
&lt;br /&gt;
Um auf einen Tasterdruck reagieren zu können, muss die Datei fhem.cfg ergänzt werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan(&#039;00:17:31:fa:9b:51&#039;)}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4185</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4185"/>
		<updated>2013-12-31T16:49:21Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* OpenWRT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In der Shell folgenden Befehl eingeben. Die MAC-Adresse muss natürlich angepasst werden das Interface (hier br-lan) eventuell auch.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake  -i br-lan 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei myUtils.pm erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 $ret .= qx(etherwake -i br-lan $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In dem FHEM-Webinterface { WakeOnLan(&#039;00:06:55:5a:53:f3&#039;);; } eingeben.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4171</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4171"/>
		<updated>2013-12-31T12:53:41Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* OpenWRT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In der Shell folgenden Befehl eingeben. Die MAC-Adresse muss natürlich angepasst werden.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei myUtils.pm erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 $ret .= qx(etherwake $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In dem FHEM-Webinterface { WakeOnLan(&#039;00:06:55:5a:53:f3&#039;);; } eingeben.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4170</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4170"/>
		<updated>2013-12-31T12:46:05Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei myUtils.pm erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 $ret .= qx(etherwake $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4169</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4169"/>
		<updated>2013-12-31T12:38:36Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Ermitteln der MAC-Adresse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4168</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4168"/>
		<updated>2013-12-31T12:37:37Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingeschaltet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4167</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4167"/>
		<updated>2013-12-31T12:36:58Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* WakeOnLan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese packete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingerichtet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4166</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=4166"/>
		<updated>2013-12-31T12:36:45Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: Die Seite wurde neu angelegt: „  = WakeOnLan =  Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese packete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhal…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= WakeOnLan =&lt;br /&gt;
&lt;br /&gt;
Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese packete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (im BIOS) eingerichtet werden.&lt;br /&gt;
 &lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
-	Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
-	Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=4125</id>
		<title>OpenWRT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=4125"/>
		<updated>2013-12-30T18:42:56Z</updated>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um aus FHEM heraus &#039;&#039;&#039;E-Mail senden&#039;&#039;&#039; zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
=== FritzBox 7170 (non-chroot) ===&lt;br /&gt;
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; | /usr/bin/mail send -i - -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fritz!Box 7390 ===&lt;br /&gt;
Auf der [[AVM Fritz!Box|FritzBox 7390]] ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).&lt;br /&gt;
&lt;br /&gt;
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z.&amp;amp;nbsp;B. in 99_myUtils.pm) die Zeile &#039;&#039;use FritzBoxUtils;&#039;&#039; einfügen.&lt;br /&gt;
&lt;br /&gt;
Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; &amp;amp;gt; /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;/sbin/mailer send -i &#039;/var/tmp/fhem_nachricht.txt&#039; -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;rm /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
bzw. &lt;br /&gt;
:&amp;lt;code&amp;gt;{ FB_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices  ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT  ===&lt;br /&gt;
Die Anleitung wurde mit einer frühen Beta von Barrier Breaker (r391xx) mit einem TP_Lind WDR 4900 getestet. Da &amp;quot;sendEmail&amp;quot; nicht als Package vorliegt wird in dieser Anleitung &amp;quot;ssmtp&amp;quot; verwendet.&lt;br /&gt;
Die Installation erfolgt mittels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Packete libopenssl und zlib mit installiert. Damit ssmtp funktioniert müssen die Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases angepasst werden.&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/ssmtp.conf &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root=arnold@gmx.net&lt;br /&gt;
mailhub=mail.gmx.net:465&lt;br /&gt;
rewriteDomain=gmx.net&lt;br /&gt;
hostname=gmx.net&lt;br /&gt;
FromLineOverride=YES&lt;br /&gt;
UseTLS=YES&lt;br /&gt;
#UseSTARTTLS=YES&lt;br /&gt;
AuthUser=arnold@gmx.net&lt;br /&gt;
AuthPass=Passwort_von_arnold@gmx.net&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root:arnold@gmx.net:mail.gmx.net:465&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen (von der RPi-Anleitung übernommen):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub &lt;br /&gt;
OpenWRTMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $sender = &amp;quot;dockstar\@heye-tammo.de&amp;quot;; &lt;br /&gt;
 Log 1, &amp;quot;sendEmail RCP: $rcpt, Subject: $subject, Text: $text&amp;quot;;&lt;br /&gt;
 $ret .= qx(echo -e &#039;to:$rcpt\n from:$sender\nsubject:$subject\n$text\n&#039; | ssmtp $rcpt);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab hier den entsprechenden Abschnitt unter &amp;quot;Raspberry Pi&amp;quot; lesen.&lt;br /&gt;
&lt;br /&gt;
=== Synology DiskStation ===&lt;br /&gt;
Beim DSM 3.2 gab es keinen &amp;lt;code&amp;gt;sendmail&amp;lt;/code&amp;gt;-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der &amp;lt;code&amp;gt;php-mail&amp;lt;/code&amp;gt;-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub sendmail($$$) {&lt;br /&gt;
 my($empf, $subj, $nachricht) = @_;&lt;br /&gt;
 system(&amp;amp;quot;php -r &#039;mail(\&amp;amp;quot;$empf\&amp;amp;quot;,\&amp;amp;quot;$subj\&amp;amp;quot;,\&amp;amp;quot;$nachricht\&amp;amp;quot;);&#039;&amp;amp;quot;);&lt;br /&gt;
 undef;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem [[Raspberry Pi]] noch sendEmail nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendEmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
sub &lt;br /&gt;
DebianMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;amp;quot;&amp;amp;quot;;&lt;br /&gt;
 my $sender = &amp;amp;quot;absender\@account.de&amp;amp;quot;; &lt;br /&gt;
 my $konto = &amp;amp;quot;kontoname\@account.de&amp;amp;quot;;&lt;br /&gt;
 my $passwrd = &amp;amp;quot;passwrd&amp;amp;quot;;&lt;br /&gt;
 my $provider = &amp;amp;quot;smtp.provider.de&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail RCP: $rcpt&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Subject: $subject&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Text: $text&amp;amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $ret .= qx(sendEmail -f &#039;$sender&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=no);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail returned: $ret&amp;amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit &amp;quot;Transferzeichen&amp;quot;, wie @ oder&amp;amp;#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch commandref:&lt;br /&gt;
* The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).&lt;br /&gt;
* The macro&amp;amp;#160;%&amp;amp;lt;parameter&amp;amp;gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\&lt;br /&gt;
 DebianMail(&#039;email@@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in allen anderen Fällen muss die Maskierung entfallen:&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges at *01:00:00 {\&lt;br /&gt;
 DebianMail(&#039;email@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BeagleBoard-xM ===&lt;br /&gt;
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm &#039;&#039;sendEmail&#039;&#039; wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich &#039;&#039;sendEmail&#039;&#039; als Source herunterladen. Das geht am einfachsten per &#039;&#039;wget&#039;&#039;, welches man ebenfalls erst installieren muss (aber aus einem Repository).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ zypper in wget&lt;br /&gt;
$ cd /opt&lt;br /&gt;
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz&lt;br /&gt;
$ tar xvfz sendEmail-v1.56.tar.gz&lt;br /&gt;
$ cd sendEmail-v1.56&lt;br /&gt;
$ cp sendMail /usr/local/bin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Version 1.56 von &#039;&#039;sendEmail&#039;&#039; ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
# Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile): &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;sendEmail -f absender@domain.de -u &amp;quot;%1&amp;quot; -m &amp;quot; &amp;quot; -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header=&amp;quot;X-Message-Flag: FHEM&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Beispiel fhem.cfg&lt;br /&gt;
## Mail wenn sich der Status von Heizung.* oder Hzg.* ändert &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Heizung notify Heizung.*|Hzg.* { system(&amp;quot;wmail @:%&amp;quot;)}&amp;lt;/code&amp;gt;&lt;br /&gt;
## Mail bei Signal Aussentemperatur (für dieses Beispiel wird [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate getstate] benötigt) &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Aussentemperatur notify Aussentemperatur {\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;my ($val);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;$val = fhem &amp;quot;getstate @&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;@: $val\&amp;quot;&amp;quot;);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
=== sendEmail ===&lt;br /&gt;
Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.&lt;br /&gt;
&lt;br /&gt;
Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ SUB-Routinen-Name(&#039;EMailAdresse@Mail.Domain&#039;,&#039;Test&#039;,&#039;Test-Text&#039;);; }&amp;lt;/code&amp;gt;&lt;br /&gt;
und ersetzt &#039;&#039;SUB-Routinen-Name&#039;&#039; durch den Namen der in 99_myUtils erzeugten Prozedur. Statt &#039;&#039;EMailAdresse@Mail.Domain&#039;&#039; trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &amp;amp;lt;Enter&amp;amp;gt; (nicht &amp;quot;save&amp;quot;). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt. &lt;br /&gt;
&lt;br /&gt;
Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z.&amp;amp;nbsp;B. via Putty) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -f &#039;fhemsystem@meinedomain.tld&#039; -t &#039;ich@meinedomain.tld&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;meinmailserver.meinedomain.de&#039; -xu &#039;fhemmailer&#039; -xp &#039;geheimespassword&#039; -o tls=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Email laut Log gesendet aber nicht angekommen? ==&lt;br /&gt;
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Push Service&amp;quot; selbiger eingerichtet und aktiviert wurde. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:FritzBox]]&lt;br /&gt;
[[Kategorie:BeagleBoard-xM]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=4008</id>
		<title>E-Mail senden</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=4008"/>
		<updated>2013-12-24T15:17:38Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um aus FHEM heraus &#039;&#039;&#039;E-Mail senden&#039;&#039;&#039; zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
=== FritzBox 7170 (non-chroot) ===&lt;br /&gt;
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; | /usr/bin/mail send -i - -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fritz!Box 7390 ===&lt;br /&gt;
Auf der [[AVM Fritz!Box|FritzBox 7390]] ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).&lt;br /&gt;
&lt;br /&gt;
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z.&amp;amp;nbsp;B. in 99_myUtils.pm) die Zeile &#039;&#039;use FritzBoxUtils;&#039;&#039; einfügen.&lt;br /&gt;
&lt;br /&gt;
Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; &amp;amp;gt; /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;/sbin/mailer send -i &#039;/var/tmp/fhem_nachricht.txt&#039; -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;rm /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
bzw. &lt;br /&gt;
:&amp;lt;code&amp;gt;{ FB_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices  ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT  ===&lt;br /&gt;
Die Anleitung wurde mit einer frühen Beta von Barrier Breaker (r391xx) mit einem TP_Lind WDR 4900 getestet. Da &amp;quot;sendEmail&amp;quot; nicht als Package vorliegt wird in dieser Anleitung &amp;quot;ssmtp&amp;quot; verwendet.&lt;br /&gt;
Die Installation erfolgt mittels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Packete libopenssl und zlib mit installiert. Damit ssmtp funktioniert müssen die Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases angepasst werden.&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/ssmtp.conf &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root=arnold@gmx.net&lt;br /&gt;
mailhub=mail.gmx.net:465&lt;br /&gt;
rewriteDomain=gmx.net&lt;br /&gt;
hostname=gmx.net&lt;br /&gt;
FromLineOverride=YES&lt;br /&gt;
UseTLS=YES&lt;br /&gt;
#UseSTARTTLS=YES&lt;br /&gt;
AuthUser=arnold@gmx.net&lt;br /&gt;
AuthPass=Passwort_von_arnold@gmx.net&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root:arnold@gmx.net:mail.gmx.net:465&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen (von der RPi-Anleitung übernommen):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub &lt;br /&gt;
OpenWRTMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $sender = &amp;quot;dockstar\@heye-tammo.de&amp;quot;; &lt;br /&gt;
 Log 1, &amp;quot;sendEmail RCP: $rcpt, Subject: $subject, Text: $text&amp;quot;;&lt;br /&gt;
 $ret .= qx(echo -e &#039;to:$rcpt\n from:$sender\nsubject:$subject\n$text\n&#039; | ssmtp $rcpt);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synology DiskStation ===&lt;br /&gt;
Beim DSM 3.2 gab es keinen &amp;lt;code&amp;gt;sendmail&amp;lt;/code&amp;gt;-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der &amp;lt;code&amp;gt;php-mail&amp;lt;/code&amp;gt;-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub sendmail($$$) {&lt;br /&gt;
 my($empf, $subj, $nachricht) = @_;&lt;br /&gt;
 system(&amp;amp;quot;php -r &#039;mail(\&amp;amp;quot;$empf\&amp;amp;quot;,\&amp;amp;quot;$subj\&amp;amp;quot;,\&amp;amp;quot;$nachricht\&amp;amp;quot;);&#039;&amp;amp;quot;);&lt;br /&gt;
 undef;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem [[Raspberry Pi]] noch sendEmail nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendEmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
sub &lt;br /&gt;
DebianMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;amp;quot;&amp;amp;quot;;&lt;br /&gt;
 my $sender = &amp;amp;quot;absender\@account.de&amp;amp;quot;; &lt;br /&gt;
 my $konto = &amp;amp;quot;kontoname\@account.de&amp;amp;quot;;&lt;br /&gt;
 my $passwrd = &amp;amp;quot;passwrd&amp;amp;quot;;&lt;br /&gt;
 my $provider = &amp;amp;quot;smtp.provider.de&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail RCP: $rcpt&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Subject: $subject&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Text: $text&amp;amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $ret .= qx(sendEmail -f &#039;$sender&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=no);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail returned: $ret&amp;amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit &amp;quot;Transferzeichen&amp;quot;, wie @ oder&amp;amp;#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch commandref:&lt;br /&gt;
* The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).&lt;br /&gt;
* The macro&amp;amp;#160;%&amp;amp;lt;parameter&amp;amp;gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\&lt;br /&gt;
 DebianMail(&#039;email@@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in allen anderen Fällen muss die Maskierung entfallen:&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges at *01:00:00 {\&lt;br /&gt;
 DebianMail(&#039;email@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BeagleBoard-xM ===&lt;br /&gt;
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm &#039;&#039;sendEmail&#039;&#039; wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich &#039;&#039;sendEmail&#039;&#039; als Source herunterladen. Das geht am einfachsten per &#039;&#039;wget&#039;&#039;, welches man ebenfalls erst installieren muss (aber aus einem Repository).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ zypper in wget&lt;br /&gt;
$ cd /opt&lt;br /&gt;
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz&lt;br /&gt;
$ tar xvfz sendEmail-v1.56.tar.gz&lt;br /&gt;
$ cd sendEmail-v1.56&lt;br /&gt;
$ cp sendMail /usr/local/bin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Version 1.56 von &#039;&#039;sendEmail&#039;&#039; ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
# Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile): &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;sendEmail -f absender@domain.de -u &amp;quot;%1&amp;quot; -m &amp;quot; &amp;quot; -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header=&amp;quot;X-Message-Flag: FHEM&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Beispiel fhem.cfg&lt;br /&gt;
## Mail wenn sich der Status von Heizung.* oder Hzg.* ändert &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Heizung notify Heizung.*|Hzg.* { system(&amp;quot;wmail @:%&amp;quot;)}&amp;lt;/code&amp;gt;&lt;br /&gt;
## Mail bei Signal Aussentemperatur (für dieses Beispiel wird [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate getstate] benötigt) &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Aussentemperatur notify Aussentemperatur {\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;my ($val);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;$val = fhem &amp;quot;getstate @&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;@: $val\&amp;quot;&amp;quot;);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
=== sendEmail ===&lt;br /&gt;
Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.&lt;br /&gt;
&lt;br /&gt;
Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ SUB-Routinen-Name(&#039;EMailAdresse@Mail.Domain&#039;,&#039;Test&#039;,&#039;Test-Text&#039;);; }&amp;lt;/code&amp;gt;&lt;br /&gt;
und ersetzt &#039;&#039;SUB-Routinen-Name&#039;&#039; durch den Namen der in 99_myUtils erzeugten Prozedur. Statt &#039;&#039;EMailAdresse@Mail.Domain&#039;&#039; trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &amp;amp;lt;Enter&amp;amp;gt; (nicht &amp;quot;save&amp;quot;). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt. &lt;br /&gt;
&lt;br /&gt;
Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z.&amp;amp;nbsp;B. via Putty) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -f &#039;fhemsystem@meinedomain.tld&#039; -t &#039;ich@meinedomain.tld&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;meinmailserver.meinedomain.de&#039; -xu &#039;fhemmailer&#039; -xp &#039;geheimespassword&#039; -o tls=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Email laut Log gesendet aber nicht angekommen? ==&lt;br /&gt;
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Push Service&amp;quot; selbiger eingerichtet und aktiviert wurde. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:FritzBox]]&lt;br /&gt;
[[Kategorie:BeagleBoard-xM]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2375</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2375"/>
		<updated>2013-07-05T10:34:13Z</updated>

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

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2373</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2373"/>
		<updated>2013-07-05T10:05:49Z</updated>

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

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

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

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

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

		<summary type="html">&lt;p&gt;Snowyrain: /* Inbetriebnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung auf 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex-Bauen==&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
==Ethersex-Flashen==&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). &lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 2000&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ermittlung der Betriebspunkte==&lt;br /&gt;
&lt;br /&gt;
Wichtig sind vier Werte:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Messwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) aus der Schaltung entfernen.&lt;br /&gt;
Minimalwert: Messwert wenn der Raumtemperaturregler die Therme ausschaltet. Hierfür den Raumtemperaturregler auf minimale Temperatur einstellen. Die Steuersignalspannung sollte ca. 3V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
Maximalwert: Messwert wenn der Raumtemperaturregler die Therme auf 100%. Hierfür den Raumtemperaturregler auf maximale Temperatur einstellen. Die Steuersignalspannung sollte ca. 18-22V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Stellwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) wieder in die Schaltung einsetzen. Und den Raumtemperaturregler auf minimale Raumtemperatur einstellen.&lt;br /&gt;
Jetzt werden die Stellwerte ermittelt. Der Sollwert des LTC1257 langsam erhöht und der aktuelle Wert mittels des ADC gemessen.  Hierfür werden abwechselnd die Befehle: „ltc1257_set SOLLWERT“ und „adc get“ verwendet. Beide Werte auschreiben.&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2367</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2367"/>
		<updated>2013-07-05T09:29:19Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Teileliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung auf 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex-Bauen==&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
==Ethersex-Flashen==&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). &lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 2000&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2366</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2366"/>
		<updated>2013-07-05T09:23:10Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: /* Vorbereitung 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung auf 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex-Bauen==&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
==Ethersex-Flashen==&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). &lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2365</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2365"/>
		<updated>2013-07-05T09:22:16Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung auf 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Digital-to-Analog-Converter&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex-Bauen==&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
==Ethersex-Flashen==&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). &lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2364</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=2364"/>
		<updated>2013-07-05T09:10:58Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung auf 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Digital-to-Analog-Converter&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_Prototyp.jpg&amp;diff=2363</id>
		<title>Datei:Junkers Therme Stetigregelung Prototyp.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_Prototyp.jpg&amp;diff=2363"/>
		<updated>2013-07-05T09:09:57Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_2MP.png&amp;diff=2362</id>
		<title>Datei:Junkers Therme Stetigregelung 2MP.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_2MP.png&amp;diff=2362"/>
		<updated>2013-07-05T09:04:57Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_1MP.jpg&amp;diff=2361</id>
		<title>Datei:Junkers Therme Stetigregelung 1MP.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_1MP.jpg&amp;diff=2361"/>
		<updated>2013-07-05T09:04:43Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_0MP.png&amp;diff=2360</id>
		<title>Datei:Junkers Therme Stetigregelung 0MP.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_0MP.png&amp;diff=2360"/>
		<updated>2013-07-05T09:03:39Z</updated>

		<summary type="html">&lt;p&gt;Snowyrain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snowyrain</name></author>
	</entry>
</feed>