<?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=Kpwg</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=Kpwg"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Kpwg"/>
	<updated>2026-04-12T04:21:16Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=37456</id>
		<title>ReadingsChange</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=37456"/>
		<updated>2022-05-29T12:21:40Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsChange}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Formatieren von Readings&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=readingsChange&lt;br /&gt;
|ModTechName=33_readingsChange.pm&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])}} &lt;br /&gt;
&lt;br /&gt;
Eventuell ist es nötig, die Readings eines Gerätes zu formatieren, Ihnen also Nachkommastellen abzuschneiden oder Textinhalte zu entfernen, hinzufügen oder umzustellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu dient das FHEM-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsChange]]. Sobald ein Reading vom Device erzeugt wird, dass dem RegEX des Moduls entspricht, wird die Formatierung, z.B. von 27.2852 zu 27.3 vorgenommen.&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Die Definition ist vom Modulautor in der Referenz beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten ==&lt;br /&gt;
ReadingsChange ist abhängig von der Reihenfolge der Events und deren interner Verarbeitung. In dieser &amp;quot;Nahrungskette&amp;quot; steht es ziemlich weit hinten, mit dem Ergebnis, dass zum Beispiel Devices mit Attributen wie event-on-Change-reading fallweise nicht formatiert werden.&lt;br /&gt;
Dies erklärt dieser und sein folgender Forumseintrag: {{Link2Forum|Topic=65055|LinkText=readingsChange funktioniert nicht mehr}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier spielt eine wichtige Rolle die Notify-Order, die man mit list .* NTFY_ORDER sich vor Augen führen kann.&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Es soll das Reading &amp;quot;battery&amp;quot; für den Batteriestatus mehrerer HUE-Devices (Bewegungsmelder), welche einen numerischen Wert zwischen 0 und 100 liefern, in &amp;quot;ok&amp;quot; oder &amp;quot;low&amp;quot; übersetzt werden. Die Schwelle von 30% für &amp;quot;low&amp;quot; ist an dieser Stelle nur beispielhaft.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define rc_battState readingsChange HUEMotion. ^battery$ (\d+) {$1 &amp;gt; 30 ? &amp;quot;ok&amp;quot; : &amp;quot;low&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Beim Homematic-Zähler HM-ES-TX-WM wird der übermittelte Wert von &#039;&#039;powerIEC&#039;&#039; nicht als &amp;quot;signed integer() (-2.147.4483.648 ... 2.147.483.647)&amp;quot; sondern als &amp;quot;unsigned integer() oder DWORD ( 0... 4294967295 )&amp;quot; interpretiert und damit entsprechend falsch angezeigt. Sofern der Zähler nur für den Bezug von Energie genutzt wird, tritt der Fehler nicht auf, um jedoch negative Leistungswerte (z.B. durch Einspeisung Balkonkraftwerk) richtig anzuzeigen, wird folgende Zeile nach Anpassung des Devicenamens helfen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define rc_Zaehler_neg readingsChange HM_3BD456_IEC_01 powerIEC (\d+) { $1 &amp;gt; 400000000 ? $1-4294967295 : $1}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=60226|LinkText=Vorstellung des Moduls}}&lt;br /&gt;
* [[Z-Wave-PHI_PST02-1A-T%C3%BCr-,_Bewegungs-,_Helligkeits-,_Temperatursensor#Temperaturkorrektur|Beispiel zu Temperaturoffset]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=37455</id>
		<title>ReadingsChange</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=37455"/>
		<updated>2022-05-29T12:19:03Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsChange}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Formatieren von Readings&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=readingsChange&lt;br /&gt;
|ModTechName=33_readingsChange.pm&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])}} &lt;br /&gt;
&lt;br /&gt;
Eventuell ist es nötig, die Readings eines Gerätes zu formatieren, Ihnen also Nachkommastellen abzuschneiden oder Textinhalte zu entfernen, hinzufügen oder umzustellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu dient das FHEM-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsChange]]. Sobald ein Reading vom Device erzeugt wird, dass dem RegEX des Moduls entspricht, wird die Formatierung, z.B. von 27.2852 zu 27.3 vorgenommen.&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Die Definition ist vom Modulautor in der Referenz beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten ==&lt;br /&gt;
ReadingsChange ist abhängig von der Reihenfolge der Events und deren interner Verarbeitung. In dieser &amp;quot;Nahrungskette&amp;quot; steht es ziemlich weit hinten, mit dem Ergebnis, dass zum Beispiel Devices mit Attributen wie event-on-Change-reading fallweise nicht formatiert werden.&lt;br /&gt;
Dies erklärt dieser und sein folgender Forumseintrag: {{Link2Forum|Topic=65055|LinkText=readingsChange funktioniert nicht mehr}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier spielt eine wichtige Rolle die Notify-Order, die man mit list .* NTFY_ORDER sich vor Augen führen kann.&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Es soll das Reading &amp;quot;battery&amp;quot; für den Batteriestatus mehrerer HUE-Devices (Bewegungsmelder), welche einen numerischen Wert zwischen 0 und 100 liefern, in &amp;quot;ok&amp;quot; oder &amp;quot;low&amp;quot; übersetzt werden. Die Schwelle von 30% für &amp;quot;low&amp;quot; ist an dieser Stelle nur beispielhaft.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define rc_battState readingsChange HUEMotion. ^battery$ (\d+) {$1 &amp;gt; 30 ? &amp;quot;ok&amp;quot; : &amp;quot;low&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Beim Homematic-Zähler HM-ES-TX-WM wird der übermittelte Wert von &#039;&#039;powerIEC&#039;&#039; nicht als &amp;quot;signed integer() (-2.147.4483.648 ... 2.147.483.647)&amp;quot; sondern als &amp;quot;unsigned integer() oder DWORD ( 0... 4294967295 )&amp;quot; interpretiert und damit entsprechend falsch angezeigt. Sofern der Zähler nur für den Bezug von Energie genutzt wird, tritt der Fehler nicht auf, um jedoch negative Leistungswerte (z.B. durch Einspeisung Balkonkraftwerk) richtig anzuzeigen, wird folgende Zeile helfen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define rc_Zaehler_neg readingsChange HM_3BD456_IEC_01 powerIEC (\d+) { $1 &amp;gt; 400000000 ? $1-4294967295 : $1}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=60226|LinkText=Vorstellung des Moduls}}&lt;br /&gt;
* [[Z-Wave-PHI_PST02-1A-T%C3%BCr-,_Bewegungs-,_Helligkeits-,_Temperatursensor#Temperaturkorrektur|Beispiel zu Temperaturoffset]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=36467</id>
		<title>ReadingsChange</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsChange&amp;diff=36467"/>
		<updated>2021-12-03T10:20:39Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: Beispiel hinzu gefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsChange}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Formatieren von Readings&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=readingsChange&lt;br /&gt;
|ModTechName=33_readingsChange.pm&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])}} &lt;br /&gt;
&lt;br /&gt;
Eventuell ist es nötig, die Readings eines Gerätes zu formatieren, Ihnen also Nachkommastellen abzuschneiden oder Textinhalte zu entfernen, hinzufügen oder umzustellen.&lt;br /&gt;
&lt;br /&gt;
Hierzu dient das FHEM-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsChange]]. Sobald ein Reading vom Device erzeugt wird, dass dem RegEX des Moduls entspricht, wird die Formatierung, z.B. von 27.2852 zu 27.3 vorgenommen.&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Die Definition ist vom Modulautor in der Referenz beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten ==&lt;br /&gt;
ReadingsChange ist abhängig von der Reihenfolge der Events und deren interner Verarbeitung. In dieser &amp;quot;Nahrungskette&amp;quot; steht es ziemlich weit hinten, mit dem Ergebnis, dass zum Beispiel Devices mit Attributen wie event-on-Change-reading fallweise nicht formatiert werden.&lt;br /&gt;
Dies erklärt dieser und sein folgender Forumseintrag: {{Link2Forum|Topic=65055|LinkText=readingsChange funktioniert nicht mehr}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier spielt eine wichtige Rolle die Notify-Order, die man mit list .* NTFY_ORDER sich vor Augen führen kann.&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Es soll das Reading &amp;quot;battery&amp;quot; für den Batteriestatus mehrerer HUE-Devices (Bewegungsmelder), welche einen numerischen Wert zwischen 0 und 100 liefern, in &amp;quot;ok&amp;quot; oder &amp;quot;low&amp;quot; übersetzt werden. Die Schwelle von 30% für &amp;quot;low&amp;quot; ist an dieser Stelle nur beispielhaft.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define rc_battState readingsChange HUEMotion. ^battery$ (\d+) {$1 &amp;gt; 30 ? &amp;quot;ok&amp;quot; : &amp;quot;low&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=60226|LinkText=Vorstellung des Moduls}}&lt;br /&gt;
* [[Z-Wave-PHI_PST02-1A-T%C3%BCr-,_Bewegungs-,_Helligkeits-,_Temperatursensor#Temperaturkorrektur|Beispiel zu Temperaturoffset]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HMCCU&amp;diff=31661</id>
		<title>HMCCU</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HMCCU&amp;diff=31661"/>
		<updated>2019-11-09T11:00:41Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Autocreate von Client Devices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anbindung HomeMatic CCU an FHEM&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=HMCCU&lt;br /&gt;
|ModForumArea=HomeMatic&lt;br /&gt;
|ModTechName=88_HMCCU.pm &lt;br /&gt;
|ModOwner=zap ({{Link2FU|10980|Forum}} / [[Benutzer Diskussion:Zap|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
==Einführung==&lt;br /&gt;
===Übersicht===&lt;br /&gt;
Das Modul [[HMCCU]] ermöglicht zusammen mit den Client Modulen → [[HMCCUDEV]], HMCCUCHN und HMCCUPROCRPC eine Integration der [[HomeMatic]] CCU Zentrale sowie der dort angelernten Geräte in FHEM. Im Einzelnen werden folgende Funktionen unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt Hard- und Software CCUs inkl. CCU3, YAHM, piVCCU und RaspberryMatic&lt;br /&gt;
* Unterstützung der Protokolle BidCos, Wired und [[HomeMatic IP|HM-IP]]&lt;br /&gt;
* Unterstützung von CUxD, OSRAM und Philips Hue Devices in der CCU&lt;br /&gt;
* Unterstützung von HVL (HomeMatic Virtual Layer)&lt;br /&gt;
* Unterstützung von CCU Gerätegruppen bzw. virtuellen Geräten (Heizung, Rauchmelder)&lt;br /&gt;
* Automatische Aktualisierung von Gerätezuständen in FHEM per RPC-Server&lt;br /&gt;
* Automatische Konvertierung und Skalierung von Werten beim Lesen und Schreiben&lt;br /&gt;
* Lesen und Schreiben von CCU Systemvariablen&lt;br /&gt;
* Ausführen von CCU Programmen&lt;br /&gt;
* Ausführen von HomeMatic Scripts auf der CCU&lt;br /&gt;
&lt;br /&gt;
Die einzelnen Module haben folgende Aufgaben:&lt;br /&gt;
&lt;br /&gt;
* HMCCU: Kommunikation zwischen FHEM und CCU (I/O Device)&lt;br /&gt;
* HMCCURPCPROC: RPC-Server zum Empfang von Events der CCU&lt;br /&gt;
* HMCCUDEV: Definition von FHEM Devices für HomeMatic Geräte&lt;br /&gt;
* HMCCUCHN: Definition von FHEM Devices für einzelne Kanäle von HomeMatic Geräten&lt;br /&gt;
* HMCCUConf: Templates mit Default Attributen für bestimmte HomeMatic Gerätetypen&lt;br /&gt;
&lt;br /&gt;
===Geräte, Kanäle und Datenpunkte===&lt;br /&gt;
Geräte in der HomeMatic CCU bestehen aus einem oder mehreren Kanälen. Ein Kanal wiederum hat einen oder mehrere Datenpunkte. Über diese Datenpunkte kann ein Gerät gesteuert oder Statusinformationen ausgelesen werden. Sofern ein Datenpunkt lesbar ist, kann er als Reading in einem HMCCUCHN oder HMCCUDEV Device dargestellt werden. Ausgehend von dieser Abbildung in der CCU kann man nun entscheiden, ob man ein CCU Gerät mit HMCCUCHN oder HMCCUDEV definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn alle benötigten Datenpunkte eines Gerätes über einen Kanal angesprochen werden können, sollte HMCCUCHN verwendet werden. Mit HMCCUDEV werden alle Kanäle eines Gerätes eingebunden. Außerdem unterstützt HMCCUDEV Rauchmeldergruppen sowie virtuelle Geräte wie z.B. Heizungsgruppen.&lt;br /&gt;
&lt;br /&gt;
Ein Sonderfall ist der Statuskanal 0, der von allen HomeMatic Geräten bereitgestellt wird. Dieser Kanal ist inklusive seiner Datenpunkte sowohl in HMCCUCHN als auch in HMCCUDEV Devices verfügbar.&lt;br /&gt;
{{Hinweis|Im Artikel → [[HMCCU Best Practice]] gibt es einige Tipps für den Einstieg inklusive Schritt-für-Schritt Anleitungen.}}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme==&lt;br /&gt;
===Zu beachten===&lt;br /&gt;
&lt;br /&gt;
* In den CCU Gerätenamen dürfen keine Umlaute verwendet werden. Leerzeichen sind zulässig, können aber u.U. bei einigen Funktionen zu Problemen führen.&lt;br /&gt;
* Namen in der CCU müssen über alle Objekttypen hinweg eindeutig sein. Beispiel: Ein Gerät und ein Raum dürfen nicht den gleichen Namen haben.&lt;br /&gt;
* Nach dem Neustart der CCU muss auch der RPC-Server neu gestartet werden, da die CCU2 bei einem Neustart die registrierten RPC-Server &amp;quot;vergisst&amp;quot;.&lt;br /&gt;
* Vor der Ausführung eines FHEM Updates oder vor der Installation eines CCU Firmware Updates muss der RPC-Server gestoppt werden.&lt;br /&gt;
* Seit der CCU Firmware 2.27.7 sind die Zugriffsmöglichkeiten auf die CCU durch eine Firewall abgesichert. Der Zugriff durch FHEM muss explizit freigeschaltet werden, da HMCCU sonst nicht korrekt funktioniert (s. nächster Abschnitt).&lt;br /&gt;
&lt;br /&gt;
===CCU Firewall Einstellungen===&lt;br /&gt;
Ab CCU Firmware 2.27.7 sind auf der CCU über das WebGUI folgende Einstellungen vorzunehmen:&lt;br /&gt;
* Menü &amp;quot;Einstellungen &amp;gt; Systemsteuerung&amp;quot; aufrufen&lt;br /&gt;
* Button &amp;quot;Firewall konfigurieren&amp;quot; anklicken&lt;br /&gt;
* Bei &amp;quot;Firewall-Richtlinie&amp;quot; den Eintrag &amp;quot;Ports offen&amp;quot; auswählen, andernfalls müssen die notwendigen Ports im Feld &amp;quot;Port-Freigabe&amp;quot; explizit angegeben werden&lt;br /&gt;
* Die Rechte für &amp;quot;HomeMatic XML-RPC API&amp;quot; und &amp;quot;Remote HomeMatic-Script API&amp;quot; auf &amp;quot;Vollzugriff&amp;quot; setzen.&lt;br /&gt;
* Man kann die Rechte auf &amp;quot;Eingeschränkter Zugriff&amp;quot; belassen, muss dann aber im Feld &amp;quot;IP-Adressen für eingeschränkten Zugriff&amp;quot; die IP des FHEM-Servers oder das komplette Subnetz in Subnet-Notation angeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss in der Systemsteuerung unter &amp;quot;Sicherheit&amp;quot; die Option &amp;quot;Authentifizierung&amp;quot; deaktiviert werden, da HMCCU den Zugriff per Username/Password noch nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Alle HMCCU Module sind Teil von FHEM. HMCCU benötigt die Perl Module RPC::XML::Server und RPC::XML::Client. Unter debian/raspbian kann das Paket librpc-xml-perl installiert werden&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install -y librpc-xml-perl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der interne RPC-Server legt für den Datenaustausch zwischen CCU2 und FHEM Dateien im Verzeichnis /tmp an. Der fhem Prozess benötigt daher Schreibrechte für dieses Verzeichnis. Das Verzeichnis kann mit dem Attribut &#039;&#039;rpcqueue&#039;&#039; geändert werden. Der mit dem Modul HMCCURPCPROC bereitgestellte externe RPC-Server verwendet keine temporären Dateien. Der interne RPC-Server wird ab Version 4.4 nicht mehr unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Definition I/O Device===&lt;br /&gt;
Im ersten Schritt wird ein I/O Device angelegt, das für die Kommunikation zwischen FHEM und der CCU verantwortlich ist. Im folgenden Beispiel wird davon ausgegangen, dass die CCU unter der IP-Adresse 192.168.1.10 erreichbar ist. Das FHEM Device bekommt den Namen „d_ccu“.&lt;br /&gt;
&amp;lt;pre&amp;gt;define d_ccu HMCCU 192.168.1.10&amp;lt;/pre&amp;gt;&lt;br /&gt;
Falls die CCU als Software Service auf dem gleichen Rechner läuft wie FHEM, sollte bei der Definition der Parameter &#039;&#039;ccudelay&#039;&#039; angegeben werden. Die CCU Services brauchen beim Starten länger als FHEM. Durch &#039;&#039;ccudelay&#039;&#039; wird der Start von FHEM für die angegebene Anzahl Sekunden verzögert. Die Vorgabe sind 180 Sekunden. Je nach Installation kann auch ein höherer Wert notwendig sein:&lt;br /&gt;
&amp;lt;pre&amp;gt;define d_ccu HMCCU 192.168.1.10 ccudelay=180&amp;lt;/pre&amp;gt;&lt;br /&gt;
Durch diese Angabe erfolgt eine verzögerte Initialisierung des I/O Device sowie der FHEM HomeMatic Devices, wenn die CCU beim Start von FHEM nicht erreichbar ist. Der Start von FHEM wird dadurch nicht verzögert. Die verzögerte Initialisierung kann mit dem Parameter &#039;&#039;delayedinit&#039;&#039; erzwungen werden.&lt;br /&gt;
&lt;br /&gt;
===RPC Server konfigurieren===&lt;br /&gt;
Im nächsten Schritt wird der RPC-Server konfiguriert und gestartet. Zunächst werden mit dem Attribut &#039;&#039;rpcinterfaces&#039;&#039; die Schnittstellen bzw. Ports festgelegt, für die sich der RPC-Server bei der CCU registrieren soll. Folgende Angaben sind möglich:&lt;br /&gt;
* BidCos-RF&lt;br /&gt;
* BidCos-Wired&lt;br /&gt;
* HmIP-RF&lt;br /&gt;
* CUxD&lt;br /&gt;
* Homegear&lt;br /&gt;
* HVL&lt;br /&gt;
* VirtualDevices&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;! Die CCU stellt außer BidCos-RF nur die Schnittstellen bereit, für die auch Geräte vorhanden sind. Nicht verwendete Schnittstellen dürfen bei &#039;&#039;rpcinterfaces&#039;&#039; nicht angegeben werden, da sonst der RPC-Server nicht startet. Im Internal &amp;quot;ccuinterfaces&amp;quot; werden nach der Definition des I/O Device alle verfügbaren Schnittstellen angezeigt.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch Setzen des Attributs &#039;&#039;ccuflags&#039;&#039; auf den Wert procrpc der externe RPC-Server aktiviert. Die Verwendung des internen RPC-Servers ist zwar noch möglich, wird jedoch nicht mehr offiziell unterstützt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Externer RPC-Server (HMCCURPCPROC)&#039;&#039;&#039;&lt;br /&gt;
Beim ersten Start dieses RPC-Servers über das I/O Device wird automatisch je Schnittstelle ein Device vom Typ HMCCURPCPROC angelegt. Die Attribute room und group werden vom I/O Device übernommen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RPC-Server starten&#039;&#039;&#039;&lt;br /&gt;
Nun kann der RPC-Server gestartet werden. Dabei wird je RPC-Schnittstelle ein separater fhem.pl Prozess mit eigenem Listening-Port gestartet. Beim ersten Start legt HMCCU für jede unter &#039;&#039;rpcinterfaces&#039;&#039; angegebene Schnittstelle ein Device vom Typ HMCCURPCPROC an. Bei aktivierter Firewall müssen die Ports (s. Attribut &#039;&#039;rpcserverport&#039;&#039;) geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Alle RPC-Server werden über das I/O Device mit einem Befehl gestartet:&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu rpcserver on&amp;lt;/pre&amp;gt;&lt;br /&gt;
Während des Starts der RPC-Server und der Registrierung bei der CCU kann das I/O Device nur eingeschränkt verwendet werden. Dies wird durch den Status „starting/busy“ angezeigt. Nachdem die RPC-Server gestartet wurden, wechselt der Status zu „running/OK“. Zusätzlich werden im Internal RPCPID die Prozess-IDs der RPC-Server Prozesse gespeichert.&lt;br /&gt;
Anschließend sollte man noch das Attribut &#039;&#039;rpcserver&#039;&#039; auf „on“ setzen, damit die RPC-Server beim Start von FHEM automatisch gestartet werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr d_ccu rpcserver on&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Vorgaben für Client Devices===&lt;br /&gt;
Im I/O Device stehen einige Attribute zur Verfügung, über die Vorgaben für Attribute in Client-Devices eingestellt werden können:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribut in HMCCU !! Vorgabe für Attribut in&amp;lt;br/&amp;gt;HMCCUDEV/HMCCUCHN !! Default !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| ccudef-hmstatevals || hmstatevals || &#039;^UNREACH!(1|true):unreachable;^LOW_?BAT!(1|true):warn_battery&#039; || Legt fest, wie der HomeMatic Status eines Client-Device ermittelt wird.&lt;br /&gt;
|-&lt;br /&gt;
| ccudef-readingfilter || ccureadingfilter || .* || Legt fest, welche Datenpunkte eines CCU Gerätes als Readings gespeichert werden&lt;br /&gt;
|-&lt;br /&gt;
| ccudef-readingname || ccureadingname || Kein Default || Ändert den Namen von Readings und/oder ergänzt neue Readings&lt;br /&gt;
|-&lt;br /&gt;
| ccudef-substitute || substitute || Kein Default || Ersetzt Datenpunktwerte vor der Speicherung in Readings.&lt;br /&gt;
|}&lt;br /&gt;
Der Inhalt der HMCCU Attribute wird an die Attribute im Client-Device angehängt. In der Datei HMCCUConf.pm ist ein Default-Template für ein HMCCU Device definiert, das über den Befehl &#039;&#039;&#039;set defaults&#039;&#039;&#039; für das I/O Device angewendet werden kann. Dabei werden die Attribute &#039;&#039;ccudef-*&#039;&#039; auf Werte gesetzt, die Readings und Werte analog zu CUL_HM erzeugen.&lt;br /&gt;
&lt;br /&gt;
Wichtig! Bei der Ausführung von &#039;&#039;&#039;set defaults&#039;&#039;&#039; für das I/O Device wird der Reading-Filter auf den Wert &amp;quot;^(LOW_?BAT|UNREACH)$&amp;quot; gesetzt. Dies hat zur Folge, dass in den Client-Devices nur diese beiden Datenpunkte als Readings gespeichert werden. Daher muss für jedes Client-Device über das lokale Attribut &#039;&#039;ccureadingfilter&#039;&#039; eine Liste der zusätzlich benötigten Datenpunkte definiert werden.&lt;br /&gt;
&lt;br /&gt;
==Synchronisation mit der CCU==&lt;br /&gt;
Das Modul HMCCU bietet Befehle an, um Daten zwischen der CCU und FHEM zu synchronisieren. Der Befehl &#039;&#039;&#039;get devicelist&#039;&#039;&#039; liest alle Geräte aus der CCU. Er sollte immer ausgeführt werden, wenn sich an einer Gerätedefinition in der CCU etwas geändert hat, z.B. Gerät oder Kanal wurde umbenannt, neues Gerät wurde angelernt, Gerät wurde gelöscht. Bei der Definition des I/O Device wird der Befehl automatisch ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;&#039;get update&#039;&#039;&#039; liest die Datenpunkte aller in FHEM definierten HMCCUDEV und HMCCUCHN Devices aus der CCU und aktualisiert alle Readings aller Client Devices.&lt;br /&gt;
&lt;br /&gt;
==Autocreate von Client Devices==&lt;br /&gt;
HMCCU bietet eine Möglichkeit, um automatisch Client Devices in FHEM für Geräte oder Kanäle in der CCU anzulegen. Dazu wird der Befehl &#039;&#039;&#039;get devicelist&#039;&#039;&#039; mit folgender Syntax aufgerufen:&lt;br /&gt;
&amp;lt;pre&amp;gt;get &amp;lt;io-dev&amp;gt; devicelist create &amp;lt;dev-expr&amp;gt; [Options ...] [&amp;lt;attr&amp;gt;=&amp;lt;value [...]]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Parameter &#039;&#039;dev-expr&#039;&#039; spezifiziert per regulärem Ausdruck, für welche CCU Geräte oder Kanäle ein Device in FHEM angelegt werden soll. Es ist davon abzuraten, an dieser Stelle &amp;quot;.*&amp;quot; zu verwenden, da so sehr viele (meist unnütze) FHEM Devices angelegt werden.&lt;br /&gt;
Folgende &#039;&#039;Options&#039;&#039; sind möglich:&lt;br /&gt;
*t={chn|dev|all} - Es werden nur Kanäle (chn) oder Geräte (dev) berücksichtigt (ab 3.6).&lt;br /&gt;
*p=&amp;lt;prefix&amp;gt; - Der Text &#039;&#039;prefix&#039;&#039; wird den Namen der neuen FHEM Devices vorangestellt.&lt;br /&gt;
*s=&amp;lt;suffix&amp;gt; - Der Text &#039;&#039;suffix&#039;&#039; wird an die Namen der neuen FHEM Devices angehängt.&lt;br /&gt;
*f=&amp;lt;format&amp;gt; - Mit &#039;&#039;format&#039;&#039; kann ein Template für die FHEM Devicenamen festgelegt werden. In einem Template können folgende Platzhalter verwendet werden: %n = CCU Geräte- oder Kanalname, %d = CCU Gerätename, %a = CCU Geräte- oder Kanaladresse.&lt;br /&gt;
*defattr - Sorgt dafür, dass für die neu definierten FHEM Devices einige Defaultattribute gesetzt werden, sofern für den jeweiligen Gerätetyp vorhanden.&lt;br /&gt;
*duplicates - Erlaubt das Anlegen von doppelten Devices. Wenn diese Option fehlt, werden in FHEM vorhandene Geräte nicht neu angelegt.&lt;br /&gt;
*save - Nach dem Anlegen der Geräte wird die neue FHEM Konfiguration gespeichert.&lt;br /&gt;
An den Befehl kann eine Liste von Attributen angehängt werden, die den neuen FHEM-Devices zugewiesen werden sollen.&lt;br /&gt;
&lt;br /&gt;
Beispiel 1: In FHEM Devices für alle CCU Geräte anlegen, deren Namen mit &amp;quot;HM-KL&amp;quot; beginnt. Alle neuen FHEM Devices beginnen mit &amp;quot;HM_&amp;quot;. Sofern vorhanden werden Default Attribute gesetzt. Die Konfiguration wird gespeichert.&lt;br /&gt;
&amp;lt;pre&amp;gt;get d_ccu devicelist create ^HM-KL.* t=dev f=HM_%n defattr save room=Homematic&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel 2: In FHEM Devices für alle CCU Geräte anlegen, deren Namen mit &amp;quot;HM&amp;quot; oder &amp;quot;Hm&amp;quot; (HmIP-Geräte) beginnt. Alle neuen FHEM Devices haben den Namen wie in der CCU und können dann mit dem Attribut &amp;quot;alias&amp;quot; verständlicher benannt werden. Sofern vorhanden, werden default Attribute gesetzt. Die Konfiguration wird gespeichert. Der Room &amp;quot;CCU_HM&amp;quot; ist angelehnt an &amp;quot;CUL_HM&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;get d_ccu devicelist create ^H[M|m].* t=dev f=%n defattr save room=CCU_HM&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Verwaltung von Default Attributen==&lt;br /&gt;
HMCCU bietet für FHEM Devices vom Typ HMCCUCHN und HMCCUDEV bei bestimmten HomeMatic Gerätetypen Default Attribute an. Diese können in den Client Devices mit dem Befehl &#039;&#039;&#039;set defaults&#039;&#039;&#039; definiert werden. Der Befehl &#039;&#039;&#039;get defaults&#039;&#039;&#039; zeigt die für einen Gerätetyp vorhandenen Attribute an. HMCCU bietet jedem Benutzer die Möglichkeit, zusätzlich zu den in der Datei HMCCUConf.pm mitgelieferten Attributen eigene Vorlagendateien mit Default Attributen zu definieren.&lt;br /&gt;
&lt;br /&gt;
===Anzeigen der Gerätetypen mit Default Attributen===&lt;br /&gt;
Mit dem Befehl &#039;&#039;&#039;get defaults&#039;&#039;&#039; im I/O Device werden alle HomeMatic Gerätetypen angezeigt, für die Default Attribute vorhanden sind. Dabei werden auch benutzerdefinierte Attribute berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
===Default Attribute exportieren und importieren===&lt;br /&gt;
Der Befehl &#039;&#039;&#039;get exportdefaults&#039;&#039;&#039; schreibt die mitgelieferten Default Attribute aus HMCCUConf.pm in eine Vorlagendatei. Diese Datei kann der Benutzer nach seinen Bedürfnissen anpassen und anschließend mit dem Befehl &#039;&#039;&#039;set importdefaults&#039;&#039;&#039; in FHEM importieren. Das Anlegen von eigenen Default Attributen könnte so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get d_ccu exportdefaults /opt/fhem/hmccu_defattr.txt&lt;br /&gt;
&lt;br /&gt;
... Datei /opt/fhem/hmccu_defattr.txt editieren ...&lt;br /&gt;
&lt;br /&gt;
set d_ccu importdefaults /opt/fhem/hmccu_defattr.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beim Ausführen des Befehls &#039;&#039;&#039;set defaults&#039;&#039;&#039; in einem Client Device haben die benutzerdefinierten Attribute Priorität.&lt;br /&gt;
&lt;br /&gt;
===Benutzerdefinierte Attribute löschen===&lt;br /&gt;
Mit dem Befehl &#039;&#039;&#039;set cleardefaults&#039;&#039;&#039; werden alle mit &#039;&#039;&#039;set importdefaults&#039;&#039;&#039; importierten Default Attribute gelöscht. Danach sind wieder nur die in HMCCUConf.pm enthaltenen Default Attribute verfügbar.&lt;br /&gt;
&lt;br /&gt;
==Weitere Funktionen des Moduls HMCCU==&lt;br /&gt;
===Lesen und Ändern von CCU Systemvariablen===&lt;br /&gt;
Systemvariablen der CCU können mit den Befehlen &#039;&#039;&#039;get vars&#039;&#039;&#039; und &#039;&#039;&#039;set var&#039;&#039;&#039; gelesen und geändert werden. Der Befehl &#039;&#039;&#039;get vars&#039;&#039;&#039; akzeptiert als Parameter einen regulären Ausdruck. Dadurch können mehrere Systemvariablen auf einmal gelesen werden. Nach dem Auslesen einer Systemvariable wird der Wert in einem Reading im I/O Device gespeichert. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Lesen aller Systemvariablen, die mit A beginnen:&lt;br /&gt;
&amp;lt;pre&amp;gt;get d_ccu vars A.*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Systemvariablen können in regelmäßigen Abständen gelesen werden. Dazu wird mit dem Attribut ccuGetVars ein Intervall und optional ein regulärer Ausdruck für die zu lesenden Systemvariablen festgelegt.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Lesen aller Systemvariablen alle 60 Sekunden. Im zweiten Befehl werden nur Variablen gelesen, die mit &amp;quot;A&amp;quot; beginnen:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr d_ccu ccuGetVars 60&lt;br /&gt;
attr d_ccu ccuGetVars 60 ^A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn eine Systemvariable bereits in der CCU existiert, kann ihr Wert mit dem Befehl &#039;&#039;&#039;set var&#039;&#039;&#039; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Setzen der Systemvariablen „Temperatur“ auf den Wert 20.5:&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu var Temperatur 20.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl &#039;&#039;&#039;set var&#039;&#039;&#039; kann auch eine neue Systemvariable in der CCU angelegt werden. Dazu wird als erster Parameter vor dem Variablennamen der Typ der neuen Variable angegeben. Mögliche Typen sind &amp;quot;bool&amp;quot;, &amp;quot;list&amp;quot;, &amp;quot;number&amp;quot; oder &amp;quot;text&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Anlegen einer Textvariablen mit dem Namen &amp;quot;Wetter&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu var text Wetter sonnig&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optional können noch Attribute für eine neue Systemvariable gesetzt werden. Folgende Attribute sind erlaubt:&lt;br /&gt;
&lt;br /&gt;
* unit = Einheit&lt;br /&gt;
* desc = Beschreibung&lt;br /&gt;
* min = Kleinster erlaubter Wert bei numerischen Variablen&lt;br /&gt;
* max = Größter erlaubter Wert bei numerischen Variablen&lt;br /&gt;
* list = Durch Komma getrennte Liste mit zulässigen Werten bei Listen-Variablen&lt;br /&gt;
* valtrue = Angezeigter Wert bei Variablen vom Typ bool, Default = &amp;quot;ist wahr&amp;quot;&lt;br /&gt;
* valfalse = Angezeigter Wert bei Variablen vom Typ bool, Default = &amp;quot;ist falsch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Anlegen einer numerischen Variablen für Temperaturwerte:&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu var number Temperatur 20.5 unit=Grad desc=Aussentemperatur min=-10.0 max=40.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ausführen von CCU Programmen===&lt;br /&gt;
Ein in der CCU2 hinterlegtes Programm kann mit dem Befehl &#039;&#039;&#039;set execute&#039;&#039;&#039; ausgeführt werden. Einziger Parameter des Befehls ist der Name des Programms. Es spielt keine Rolle, ob das Programm in der CCU aktiv oder inaktiv ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Programm mit dem Namen &amp;quot;Schalter_Ein&amp;quot; ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu execute Schalter_Ein&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Aggregation von Gerätezuständen (ab 3.6)===&lt;br /&gt;
Hinter diesem etwas kryptischen Begriff verbirgt sich die Zusammenfassung von Zuständen von Client-Devices. Anwendungsbeispiele sind:&lt;br /&gt;
* Wieviele und welche Geräte haben einen niedrigen Batteriestand?&lt;br /&gt;
* Wieviele und welche Fenster sind geöffnet?&lt;br /&gt;
Für die Beantwortung dieser Fragen stellt HMCCU einige Befehle und Attribute bereit. Die Ergebnisse werden in Form von Readings im I/O Device bereitgestellt:&lt;br /&gt;
*&#039;&#039;Präfix&#039;&#039;_count = Anzahl der FHEM Devices, die für die Aggregation ausgewertet wurden.&lt;br /&gt;
*&#039;&#039;Präfix&#039;&#039;_list = Liste der FHEM Devices, die der if Bedingung Aggregationsregel entsprechen.&lt;br /&gt;
*&#039;&#039;Präfix&#039;&#039;_match - Anzahl der FHEM Devices, die der if Bedingung der Aggregationsregel entsprechen.&lt;br /&gt;
*&#039;&#039;Präfix&#039;&#039;_state - Ergebnis der Aggregationsregel (if oder else Wert).&lt;br /&gt;
Aggregationen werden automatisch bei Änderung von Readings neu berechnet. Alternativ kann mit dem Befehl &#039;&#039;&#039;get aggregation&#039;&#039;&#039; eine Aggregation explizit durchgeführt werden. Als Parameter wird der Name der Aggregationsregel oder &amp;quot;all&amp;quot; für alle Aggregationen übergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;get &amp;lt;io-dev&amp;gt; aggregation {all|&amp;lt;name&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Konfiguration der Aggregationen erfolgt mit Hilfe von Regeln, die über das Attribut &#039;&#039;ccuaggregate&#039;&#039; definiert werden. Dabei werden mehrere Regeln durch ein Semikolon und optional einen Zeilenumbruch getrennt. Eine Aggregationsregel enthält mehrere, durch Komma getrennte Parameter, die das Verhalten einer Aggregation festlegen:&lt;br /&gt;
*&#039;&#039;&#039;name&#039;&#039;&#039;:&amp;lt;Name&amp;gt; - Legt den Namen einer Aggregation fest.&lt;br /&gt;
*&#039;&#039;&#039;filter&#039;&#039;&#039;:{name|alias|group|room|type}=&amp;lt;Incl-Expr&amp;gt;[!&amp;lt;Excl-Expr&amp;gt;] - Legt fest, welche Geräte in die Aggregation einbezogen werden:&lt;br /&gt;
**name: FHEM Device Name&lt;br /&gt;
**alias: FHEM Device Alias&lt;br /&gt;
**group: FHEM Device &#039;&#039;group&#039;&#039; Attribut&lt;br /&gt;
**room: FHEM Device &#039;&#039;room&#039;&#039; Attribut&lt;br /&gt;
**type: HomeMatic Gerätetyp&lt;br /&gt;
*&#039;&#039;&#039;read&#039;&#039;&#039;:&amp;lt;Read-Expr&amp;gt; - Legt fest, welche Readings für die Aggregation verwendet werden (z.B. state oder LOWBAT).&lt;br /&gt;
*&#039;&#039;&#039;if&#039;&#039;&#039;:{any|all}=&amp;lt;Value&amp;gt; - Legt die Bedingung fest, unter der die Aggregationsregel greift:&lt;br /&gt;
**any: Regel greift, wenn das Reading mindestens eins der über &#039;&#039;Filter&#039;&#039; selektierten FHEM Devices den Wert &#039;&#039;Value&#039;&#039; hat.&lt;br /&gt;
**all: Regel greift, wenn die Readings aller der über &#039;&#039;Filter&#039;&#039; selektierten FHEM Devices den Wert &#039;&#039;Value&#039;&#039; haben.&lt;br /&gt;
*&#039;&#039;&#039;else&#039;&#039;&#039;:&amp;lt;Value&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;prefix&#039;&#039;&#039;:{RULE|&amp;lt;Text&amp;gt;} - Legt das Präfix für die Readings fest, die das Ergebnis einer Aggregation beinhalten wobei &amp;quot;RULE&amp;quot; für den Namen der Aggregationsregel steht.&lt;br /&gt;
*&#039;&#039;&#039;coll&#039;&#039;&#039;:{NAME|&amp;lt;Attribute&amp;gt;}[!&amp;lt;Default&amp;gt;] - Legt fest, welches Attribut der FHEM Devices, die in die Aggregation einbezogen werden, in das _list Reading aufgenommen werden, sofern sie die if Bedingung erfüllen. Dabei entspricht &amp;quot;NAME&amp;quot; dem FHEM-Devicename. Der optionale Parameter Default legt den Inhalt des _list Readings fest, wenn keines der FHEM Devices die if Bedingung erfüllt. Voreingestellt ist &amp;quot;no match&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Aggregation der Batteriezustände aller HomeMatic Geräte in FHEM (Annahme: Alle gehören zum Raum &amp;quot;Homematic&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr d_ccu ccuaggregate name:battery,filter:room=Homematic,read:(LOWBAT|LOW_BAT),if:any=yes,else:no,prefix=battery_,coll:alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Aggregationsregel könnte folgende Readings im I/O Device generieren (Annahme: Batterien von 2 Fenstersensoren leer):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
battery_count: 50&lt;br /&gt;
battery_list: Fenster Bad,Fenster Wohnzimmer&lt;br /&gt;
battery_match: 2&lt;br /&gt;
battery_state: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ausführen von HomeMatic Scripts===&lt;br /&gt;
Mit dem Befehl &#039;&#039;&#039;set hmscript&#039;&#039;&#039; kann ein beliebiges HomeMatic Script an die CCU2 zur Ausführung gesendet werden. Wenn das Script zeilenweise Daten im Format &amp;quot;Parameter=Value&amp;quot; zurück gibt, werden diese als Readings mit dem Namen &#039;&#039;Parameter&amp;quot; im I/O Device gespeichert.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Das folgende HomeMatic Script wertet alle CCU2 Systemvariablen aus. Das Ergebnis wird als Readings gespeichert (äquivalent zu Befehl &#039;&#039;&#039;get vars&#039;&#039;&#039;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
object osysvar;&lt;br /&gt;
string ssysvarid;&lt;br /&gt;
foreach (ssysvarid, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs())&lt;br /&gt;
{&lt;br /&gt;
   osysvar = dom.GetObject(ssysvarid);&lt;br /&gt;
   WriteLine (osysvar.Name() # &amp;quot;=&amp;quot; # osysvar.Value());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Script auf dem FHEM-Server unter /opt/fhem/sysvars.scr gespeichert wird, kann es wie folgt ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;set d_ccu hmscript /opt/fhem/sysvars.scr&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Interfaces_f%C3%BCr_1-Wire&amp;diff=15825</id>
		<title>Interfaces für 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Interfaces_f%C3%BCr_1-Wire&amp;diff=15825"/>
		<updated>2016-07-14T17:57:52Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der &#039;&#039;&#039;1-Wire&#039;&#039;&#039; Bus mit seinen Sensoren und Aktoren ist über ein [[Interface]] an einen Computer angeschlossen. Hierzu sind folgende Typen gebräuchlich:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;DS2480(B)&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an ein serielles Signal ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil vieler anderer [[Aktives Interface|aktiver Interfaces]].&lt;br /&gt;
* &#039;&#039;&#039;DS2482&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an ein serielles Signal auf dem I2C-Bus ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil des [[CUNO und 1-wire]]&lt;br /&gt;
* &#039;&#039;&#039;DS2490&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an einen USB-Port ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil verschiedener USB-Interfaces, er ist gegenwärtig nur über die Bibliothek libusb ansteuerbar, die von OWFS unterstützt wird. Eine Ansteuerung über OWX ist in Arbeit.&lt;br /&gt;
* &#039;&#039;&#039;DS9097&#039;&#039;&#039; ist ein [[Passives Interface|passives Interface]], mit dem die 1-Wire Komponenten aus einer seriellen RS232- Schnittstelle angesteuert werden. Dabei wird eine Spannungsversorgung realisiert, indem die RTS/CTS-Signale der Schnittstelle &amp;quot;gestohlen&amp;quot; und gesammelt werden. Der 1-Wire-Suchalgorithmus muss bei dem DS9097-Interface vollständig im ansteuernden Computer realisiert werden.&lt;br /&gt;
* &#039;&#039;&#039;DS9490R&#039;&#039;&#039; ist ein aktives 1-Wire [[USB-Interface]] (Typ 2, basierend auf dem DS2490) das auch eine Versorgungsspannung für den 1-Wire Bus zur Verfügung stellt. Zusätzlich ist ein DS1420 ID-Chip integriert. Der 1-Wire-Anschluss erfolgt über einen 6-Poligen RJ11 (&amp;quot;Western&amp;quot;-)Stecker.&lt;br /&gt;
* &#039;&#039;&#039;DS9097U&#039;&#039;&#039; ist ein [[Aktives Interface|aktives Interface]] (basierend auf dem DS2480B), welches die serielle RS232-Schnittstelle eines Computers an den 1-Wire-Bus ankoppelt. Es kann durch einen zusätzlichen USB-zu-Seriell-Konverter auch an den USB-Port angeschlossen werden. Der 1-Wire-Anschluss erfolgt über einen 6-Poligen RJ11 (&amp;quot;Western&amp;quot;-)Stecker. Den DS9097U gibt es in drei Varianten (009/S09, E25), von denen 2 mit 9-poligem Anschluss und eine mit 25-poligem Anschluss an die serielle Schnittstelle versehen sind. Problematisch ist, dass bei den 9-poligen Varianten auf die RJ-11-Anschlussbuchse keine Versorgungsspannung für den 1-Wire-Bus geführt wird, dies lässt sich aber durch Öffnung des Gehäuses und Herausführung der entsprechenden Leitungen beheben.&lt;br /&gt;
* &#039;&#039;&#039;USB9097&#039;&#039;&#039; ist  aktives 1-Wire [[USB-Interface]] (Typ 1, basierend auf dem DS2480(B)). Er benötigt das Linux-Kernmodul ch341.ko&lt;br /&gt;
* &#039;&#039;&#039;LinkUSBi&#039;&#039;&#039; ist ein USB-1-Wire Adapter mit FTDI-Chip, der gegenüber den DS2480 etc. eine verbesserte Ansteuerung des 1-Wire Bus aufweist. &#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dieser Adapter stellt verschiedene Funktionen für den 1-Wire Bus bereit, und emuliert den DS2480 Chip nur. Es kann daher derzeit zu Timing-Problemem kommen.&lt;br /&gt;
* &#039;&#039;&#039;[[Arduino mit OneWireFirmata]]&#039;&#039;&#039; [http://www.arduino.cc], kann als aktiver Busmaster für 1-Wire am USB-Port verwendet werden. Vorteil ist die preisgünstige Beschaffbarkeit und die einfache Integrierbarkeit in eigene Geräte (z.B. in der Version &#039;Nano&#039; die sich in übliche Lochrasterplatinen im 2,54 mm Rastermaß einfach einlöten läßt). An einem Arduino können bis zu 54 (modellabhängig) unabhängige 1-Wire-Busse angeschlossen werden. Nicht für 1-Wire benutzte Pins können für parallel für Digital- und Analog- Ein/Ausgabe benutzt werden.&lt;br /&gt;
*&#039;&#039;&#039;[[1W-IF-ETH]]&#039;&#039;&#039; ist eine Kombination aus einem kommerziell erhältlichen Ethernet-Modul und einem oder zwei DS2480(B)-Chips, mit denen ein 1-Wire-Bus direkt an ein Ethernet angeschlossen werden kann.&lt;br /&gt;
*&#039;&#039;&#039;[[1W-IF-WIFI]]&#039;&#039;&#039; ist eine Kombination aus einem kommerziell erhältichen WLAN-Modul und einem oder zwei DS2480(B)-Chips, mit denen ein 1-Wire-Bus direkt an ein Ethernet angeschlossen werden kann.&lt;br /&gt;
* &#039;&#039;&#039;[http://www.ethersex.de/index.php/Onewire_(Deutsch) Ethersex]&#039;&#039;&#039;, kann als aktiver Busmaster oder Slave über Ethernet, ZBus oder Funk verwendet werden. Von Vorteil sind u.a. die Möglichkeit, mehrere Busse zu bedienen und das Pollen der Sensoren bereits in Ethersex zu realisieren. Bekannteste Hardware dafür ist der [[AVR-NET-IO]].&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Interfaces_f%C3%BCr_1-Wire&amp;diff=15824</id>
		<title>Interfaces für 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Interfaces_f%C3%BCr_1-Wire&amp;diff=15824"/>
		<updated>2016-07-14T17:57:14Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der &#039;&#039;&#039;1-Wire&#039;&#039;&#039; Bus mit seinen Sensoren und Aktoren ist über ein [[Interface]] an einen Computer angeschlossen. Hierzu sind folgende Typen gebräuchlich:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;DS2480(B)&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an ein serielles Signal ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil vieler anderer [[Aktives Interface|aktiver Interfaces]].&lt;br /&gt;
* &#039;&#039;&#039;DS2482&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an ein serielles Signal auf dem I2C-Bus ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil des [[CUNO und 1-wire]]&lt;br /&gt;
* &#039;&#039;&#039;DS2490&#039;&#039;&#039; ist ein Bus-Master-IC, der einen kompletten 1-Wire Bus an einen USB-Port ankoppelt, dabei Teile des Timing sowie des Suchalgorithmus übernimmt. Dieser Schaltkreis ist Bestandteil verschiedener USB-Interfaces, er ist gegenwärtig nur über die Bibliothek libusb ansteuerbar, die von OWFS unterstützt wird. Eine Ansteuerung über OWX ist in Arbeit.&lt;br /&gt;
* &#039;&#039;&#039;DS9097&#039;&#039;&#039; ist ein [[Passives Interface|passives Interface]], mit dem die 1-Wire Komponenten aus einer seriellen RS232- Schnittstelle angesteuert werden. Dabei wird eine Spannungsversorgung realisiert, indem die RTS/CTS-Signale der Schnittstelle &amp;quot;gestohlen&amp;quot; und gesammelt werden. Der 1-Wire-Suchalgorithmus muss bei dem DS9097-Interface vollständig im ansteuernden Computer realisiert werden.&lt;br /&gt;
* &#039;&#039;&#039;DS9490R&#039;&#039;&#039; ist ein aktives 1-Wire [[USB-Interface]] (Typ 2, basierend auf dem DS2490) das auch eine Versorgungsspannung für den 1-Wire Bus zur Verfügung stellt. Zusätzlich ist ein DS1420 ID-Chip integriert. Der 1-Wire-Anschluss erfolgt über einen 6-Poligen RJ11 (&amp;quot;Western&amp;quot;-)Stecker.&lt;br /&gt;
* &#039;&#039;&#039;DS9097U&#039;&#039;&#039; ist ein [[Aktives Interface|aktives Interface]] (basierend auf dem DS2480B), welches die serielle RS232-Schnittstelle eines Computers an den 1-Wire-Bus ankoppelt. Es kann durch einen zusätzlichen USB-zu-Seriell-Konverter auch an den USB-Port angeschlossen werden. Der 1-Wire-Anschluss erfolgt über einen 6-Poligen RJ11 (&amp;quot;Western&amp;quot;-)Stecker. Den DS9097U gibt es in drei Varianten (009/S09, E25), von denen 2 mit 9-poligem Anschluss und eine mit 25-poligem Anschluss an die serielle Schnittstelle versehen sind. Problematisch ist, dass bei den 9-poligen Varianten auf die RJ-11-Anschlussbuchse keine Versorgungsspannung für den 1-Wire-Bus geführt wird, dies lässt sich aber durch Öffnung des Gehäuses und Herausführung der entsprechenden Leitungen beheben.&lt;br /&gt;
* &#039;&#039;&#039;USB9097&#039;&#039;&#039; ist  aktives 1-Wire [[USB-Interface]] (Typ 1, basierend auf dem DS2480(B)). Er benötigt das Linux-Kernmodul ch341.ko&lt;br /&gt;
* &#039;&#039;&#039;LinkUSBi&#039;&#039;&#039; ist ein USB-1-Wire Adapter mit FTDI-Chip, der gegenüber den DS2480 etc. eine verbesserte Ansteuerung des 1-Wire Bus aufweist. &#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dieser Adapter stellt verschiedene Funktionen für den 1-Wire Bus bereit, und emuliert den DS2480 Chip nur. Es kann daher derzeit zu Timing-Problemem kommen.&lt;br /&gt;
* &#039;&#039;&#039;[[Arduino mit OneWireFirmata]]&#039;&#039;&#039; [http://www.arduino.cc], kann als aktiver Busmaster für 1-Wire am USB-Port verwendet werden. Vorteil ist die preisgünstige Beschaffbarkeit und die einfache Integrierbarkeit in eigene Geräte (z.B. in der Version &#039;Nano&#039; die sich in übliche Lochrasterplatinen im 2,54 mm Rastermaß einfach einlöten läßt). An einem Arduino können bis zu 54 (modellabhängig) unabhängige 1-Wire-Busse angeschlossen werden. Nicht für 1-Wire benutzte Pins können für parallel für Digital- und Analog- Ein/Ausgabe benutzt werden.&lt;br /&gt;
*&#039;&#039;&#039;[[1W-IF-ETH]]&#039;&#039;&#039; ist eine Kombination aus einem kommerziell erhältlichen Ethernet-Modul und einem oder zwei DS2480(B)-Chips, mit denen ein 1-Wire-Bus direkt an ein Ethernet angeschlossen werden kann.&lt;br /&gt;
*&#039;&#039;&#039;[[1W-IF-WIFI]]&#039;&#039;&#039; ist eine Kombination aus einem kommerziell erhältichen WLAN-Modul und einem oder zwei DS2480(B)-Chips, mit denen ein 1-Wire-Bus direkt an ein Ethernet angeschlossen werden kann.&lt;br /&gt;
* &#039;&#039;&#039;[[http://www.ethersex.de/index.php/Onewire_(Deutsch) Ethersex]]&#039;&#039;&#039;, kann als aktiver Busmaster oder Slave über Ethernet, ZBus oder Funk verwendet werden. Von Vorteil sind u.a. die Möglichkeit, mehrere Busse zu bedienen und das Pollen der Sensoren bereits in Ethersex zu realisieren. Bekannteste Hardware dafür ist der [[AVR-NET-IO]].&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=11696</id>
		<title>Diskussion: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=Diskussion:HM-ES-TX-WM_Z%C3%A4hlersensor_f%C3%BCr_Strom-_und_Gasz%C3%A4hler&amp;diff=11696"/>
		<updated>2015-07-17T14:41:13Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: Die Seite wurde neu angelegt: „Sollte der Sensor nicht HM-ES-TX-WM heißen?“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sollte der Sensor nicht HM-ES-TX-WM heißen?&lt;/div&gt;</summary>
		<author><name>Kpwg</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=11695</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=11695"/>
		<updated>2015-07-17T14:37:12Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: fehlerhafte Bezeichnung korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-ES-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;
&#039;&#039;&#039;Dieses Device ist seit Anfang Feb. 2015 als Bausatz auf dem Markt - dieser Artikel ist im Aufbau - bitte Verständnis für Unvollständigkeiten und fehlende Bereiche &#039;&#039;&#039;&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 ableiten 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;
Aktuell (Feb. 2015) hat die Auslieferung der Geräte als (einfacher) Bausatz begonnen, zu dem es einen Ferraris-Sensor (für Stromzähler mit den markanten Laufscheiben), LED-Sensor (für neue Zähler mit S0-Schnittstelle) sowie BK-G4-Gaszähler von Elster-Kromschröder, die an einer Ziffernrolle einen kleinen Magneten haben, der über einen Sensor mit Reedkontakt erfasst wird. 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;
&lt;br /&gt;
Der HM-ES-TX-WM sendet zyklisch im 3-Minuten Takt die aktuellsten Verbrauchsdaten. Dabei ist für das Reading &amp;quot;power&amp;quot; (aktuelle Stromleistung in Watt) zu beachten, dass aller 3 Minuten nur der zuletzt bekannte Wert gesendet. Das heisst im besonderen:&lt;br /&gt;
&lt;br /&gt;
* sollten innerhalb der 3 Minuten mehrfache Impulse auftreten mit unterschiedlichen Leistungswerten, wird nur der zuletzt bekannte Wert genommen. Es findet keine Aggregation aller Impulse wie z.B. Mittelwert o.ä. statt.&lt;br /&gt;
* sollten innerhalb der 3 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;
== 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 Feraris-Fühler). Es werden der Fühlertyp und die Fühlerkonstante richtig ausgelesen und im Reading Energy die errechnete Energiemenge ausgegeben (bei Strom: Wattstunden, Wh).&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;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;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 Energy 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;
&lt;br /&gt;
 attr &amp;lt;DeviceName&amp;gt; userReadings kWh {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;CUL_HM_HM_ES_TX_WM_353594&amp;quot;,&amp;quot;energy&amp;quot;,&amp;quot;???&amp;quot;)/1000+72031.5639)}&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;
&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 ja 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;
== 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;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Energieerzeugungsmessung]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=11220</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=11220"/>
		<updated>2015-05-10T07:14:01Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Konfiguration und Flashen von ethersex */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender [http://www.pollin.de/ Pollin] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC28J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt [http://old.ethersex.de/index.php/Ethersex Ethersex] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [http://neubert-volmar.de/Hausautomation/index.html ECMD].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [http://www.gtkdb.de/index_18_1036.html hier].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine erweiterte Dokumentation zu vielen Devices ist im [http://ethersex.de/index.php/Nutzung_in_FHEM_%28Deutsch%29 Ethersex-Wiki] zu finden. Ebenso wird hier unter anderem [http://www.ethersex.de/index.php/Supported_Boards_%28Deutsch%29 Eigenbau-Hardware] vorgestellt, welche mit FHEM erprobt wurde.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT), verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfigurierten Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&#039;&#039; (siehe auch: [http://old.ethersex.de/index.php/Dallas_1-wire_Bus hier]).&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben.&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Definitionen in der [[Konfiguration]] (fhem.cfg) gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die Raum-Zuweisung ist optional.&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das [[1-Wire]] Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Ich nutze zur Zeit sechs Temperatursensoren DS18S20 im parasitären Modus (nur zwei Drähte notwendig) an einer alten Telefonverkabelung und zwei verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO sind [http://www.gtkdb.de/index_18_1040.html hier] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Übergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach zwei Sekunden die Temperatur abfragt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar (Achtung: der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [http://home.snafu.de/sicpaul/midi/hexbin.htm hier]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe [[Intertechno Code Berechnung]]).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433&amp;amp;nbsp;MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, dass ein Funkbefehl nicht ankommt und z.B. ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme (wie auch FS20) sollten deshalb besser nicht für sehr kritische Anwendungen verbaut werden.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [http://old.ethersex.de/index.php/BitfehlerASK hier] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 (bei 433 MHz entspricht das 17&amp;amp;nbsp;cm) einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und Flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B. A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieser Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge, die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden deren Korrektheit per Attribute gesteuert werden. Es sind also in FHEM weitere globale Attribute anzulegen. Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* Referenz&lt;br /&gt;
* Schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktion bekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann das NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte beachten, dass gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollte man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, z.B. an ein Gardena Magnetventil, absetzen können, muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhododendren möchten schließlich anders bewässert werden als z.B. Rasen oder Kartoffeln.&lt;br /&gt;
&lt;br /&gt;
Dazu wird dem Sensor ein neues Attribut zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, dass ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. Wie dieses Attribut ausgewertet wird, obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, dass nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V angehoben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausführung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außerhalb der Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (siehe &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Z.B. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] &lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=11219</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=11219"/>
		<updated>2015-05-10T06:37:49Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Erste 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 aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit 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;
Die Beschaltung mit C1 und R1 scheint nicht in jedem Fall angemessen zu sein. Damit kann man sich einen Sägezahn als Referenzspannung einfangen, der im Kilohertzbereich die Referenz- (und damit auch die DAC-Ausgangspannung) von 100 % auf ca. 90 % fährt. Das gibt dann unerwünschte Effekte beim Messen der Spannung für die Stetigregelung. Ohne C1 und R1 ergibt sich eine konstante Referenzspannung.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, die durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
Variante 3 auf Punktraster in einer kompakten Version. Die Widerstände wurden stehend isoliert platziert, die Sicherung dient dem Schutz der Therme.&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_V3.jpg|center|alt=Variante 3 - eine kompakte Aufbauvariante]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
Möglicherweise bricht &amp;quot;make&amp;quot; mit der Fehlermeldung &amp;quot;&amp;lt;nowiki&amp;gt;delay.h:230:28: error: __builtin_avr_delay_cycles expects an integer constant.&amp;lt;/nowiki&amp;gt;&amp;quot; ab. Abhilfe schafft ein &amp;quot;&amp;lt;nowiki&amp;gt;#define __DELAY_BACKWARD_COMPATIBLE__ &amp;lt;/nowiki&amp;gt;&amp;quot; in hardware/dac/ltc1257.c vor dem &amp;quot;&amp;lt;nowiki&amp;gt;#include &amp;lt;util/delay.h&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 4095&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ermittlung der Betriebspunkte==&lt;br /&gt;
&lt;br /&gt;
Wichtig sind vier Werte:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Messwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) aus der Schaltung entfernen.&lt;br /&gt;
Minimalwert: Messwert wenn der Raumtemperaturregler die Therme ausschaltet. Hierfür den Raumtemperaturregler auf minimale Temperatur einstellen. Die Steuersignalspannung sollte ca. 3V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
Maximalwert: Messwert wenn der Raumtemperaturregler die Therme auf 100%. Hierfür den Raumtemperaturregler auf maximale Temperatur einstellen. Die Steuersignalspannung sollte ca. 18-22V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Stellwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) wieder in die Schaltung einsetzen. Und den Raumtemperaturregler auf minimale Raumtemperatur einstellen.&lt;br /&gt;
Jetzt werden die Stellwerte ermittelt. Der Sollwert des LTC1257 langsam erhöht und der aktuelle Wert mittels des ADC gemessen.  Hierfür werden abwechselnd die Befehle: „ltc1257_set SOLLWERT“ und „adc get“ verwendet. Beide Werte auschreiben.&lt;br /&gt;
&lt;br /&gt;
==Integration in FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM muss das Setzen der Sollwerte und die Erfassung der aktuellen Sollwerte/Istwerte integriert werden. Wenn der alt Raumtemperaturregler entfällt kann zweites auch entfallen.&lt;br /&gt;
&lt;br /&gt;
===Setzen der Sollwerte===&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Sollwert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;gt;= 2048) zugewiesen. Hierfür wird eine classdef Datei erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDAC params dacValue&lt;br /&gt;
set setDAC cmd {&amp;quot;ltc1257_set %dacValue\n&amp;quot;}&lt;br /&gt;
set setDAC expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der LTC1257 als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/ltc1257.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den DAC(/LTC1257) als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINDAC ECMDDevice LTC1257&lt;br /&gt;
attr MEINDAC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl zum Setzen eines neuen Spannungswertes lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $dacValue = 1345;;\&lt;br /&gt;
fhem(&amp;quot;set MEINDAC setDacValue &amp;quot;.$dacValue);;\&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Istwerte===&lt;br /&gt;
&lt;br /&gt;
Der ADC ermittelt den aktuellen Sollwert über einen Spannungsteiler. Dieser Wert wird in einen Prozentwert (0-100) umgerechnet. Hierfür wird eine classdef Datei (adc.classdef)erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
set setDacValue postproc {\&lt;br /&gt;
	Log 3, &amp;quot;Setze Wert&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der ADC als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/adc.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den ADC als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINADC ECMDDevice LTC1257&lt;br /&gt;
attr MEINADC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Möglichkeiten==&lt;br /&gt;
&lt;br /&gt;
Ein Bild sagt mehr als tausend Worte&lt;br /&gt;
[[File:ScreenshotFHEMTherme.png|center|thumb|alt=Screenshot FHEM Therme]]&lt;br /&gt;
&lt;br /&gt;
==Kritische Nachbetrachtung==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Anschluss der Zusatzplatine nicht über die SUB-D Anschlussplatine sondern über den 10poligen Pfostenstecker. Das würde viel sauberer/professioneller aussehen und ist bei dem verwendeten Platinentyp sehr einfach zu relaisieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Spannungsversorgung des AVR-NET-IO-Boards über die 24V Spannung der Therme (irgendwie cooler)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Eventuell ist es auch bei diesen Junkersthermen sinnvoller die Steuerspannung mittels eines Relais/Transistors zwischen 3-22V zu schalten. Unter Verwendung von 2 Relais/Transistoren wären auch 4 Schaltstufen möglich (0%, 25%, 50% und 100%). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Die Zusatzplatine trennt das AVR-NET-IO-Board/Netzwerk und die Heizung nicht. Wenn keine Messung der Steuersignalspannung gewünscht ist, würde ich den LTC1257 galvanisch trennen. Bislang gab es aber keine Probleme diesbezüglich. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=11218</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=11218"/>
		<updated>2015-05-10T06:31:53Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Setzen der Sollwerte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit 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;
Die Beschaltung mit C1 und R1 scheint nicht in jedem Fall angemessen zu sein. Damit kann man sich einen Sägezahn als Referenzspannung einfangen, der im Kilohertzbereich die Referenz- (und damit auch die DAC-Ausgangspannung) von 100 % auf ca. 90 % fährt. Das gibt dann unerwünschte Effekte beim Messen der Spannung für die Stetigregelung. Ohne C1 und R1 ergibt sich eine konstante Referenzspannung.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, die durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
Variante 3 auf Punktraster in einer kompakten Version. Die Widerstände wurden stehend isoliert platziert, die Sicherung dient dem Schutz der Therme.&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_V3.jpg|center|alt=Variante 3 - eine kompakte Aufbauvariante]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
Möglicherweise bricht &amp;quot;make&amp;quot; mit der Fehlermeldung &amp;quot;&amp;lt;nowiki&amp;gt;delay.h:230:28: error: __builtin_avr_delay_cycles expects an integer constant.&amp;lt;/nowiki&amp;gt;&amp;quot; ab. Abhilfe schafft ein &amp;quot;&amp;lt;nowiki&amp;gt;#define __DELAY_BACKWARD_COMPATIBLE__ &amp;lt;/nowiki&amp;gt;&amp;quot; in hardware/dac/ltc1257.c vor dem &amp;quot;&amp;lt;nowiki&amp;gt;#include &amp;lt;util/delay.h&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 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 setDAC params dacValue&lt;br /&gt;
set setDAC cmd {&amp;quot;ltc1257_set %dacValue\n&amp;quot;}&lt;br /&gt;
set setDAC expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der LTC1257 als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/ltc1257.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den DAC(/LTC1257) als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINDAC ECMDDevice LTC1257&lt;br /&gt;
attr MEINDAC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl zum Setzen eines neuen Spannungswertes lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $dacValue = 1345;;\&lt;br /&gt;
fhem(&amp;quot;set MEINDAC setDacValue &amp;quot;.$dacValue);;\&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Istwerte===&lt;br /&gt;
&lt;br /&gt;
Der ADC ermittelt den aktuellen Sollwert über einen Spannungsteiler. Dieser Wert wird in einen Prozentwert (0-100) umgerechnet. Hierfür wird eine classdef Datei (adc.classdef)erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
set setDacValue postproc {\&lt;br /&gt;
	Log 3, &amp;quot;Setze Wert&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der ADC als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/adc.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den ADC als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINADC ECMDDevice LTC1257&lt;br /&gt;
attr MEINADC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Möglichkeiten==&lt;br /&gt;
&lt;br /&gt;
Ein Bild sagt mehr als tausend Worte&lt;br /&gt;
[[File:ScreenshotFHEMTherme.png|center|thumb|alt=Screenshot FHEM Therme]]&lt;br /&gt;
&lt;br /&gt;
==Kritische Nachbetrachtung==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Anschluss der Zusatzplatine nicht über die SUB-D Anschlussplatine sondern über den 10poligen Pfostenstecker. Das würde viel sauberer/professioneller aussehen und ist bei dem verwendeten Platinentyp sehr einfach zu relaisieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Spannungsversorgung des AVR-NET-IO-Boards über die 24V Spannung der Therme (irgendwie cooler)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Eventuell ist es auch bei diesen Junkersthermen sinnvoller die Steuerspannung mittels eines Relais/Transistors zwischen 3-22V zu schalten. Unter Verwendung von 2 Relais/Transistoren wären auch 4 Schaltstufen möglich (0%, 25%, 50% und 100%). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Die Zusatzplatine trennt das AVR-NET-IO-Board/Netzwerk und die Heizung nicht. Wenn keine Messung der Steuersignalspannung gewünscht ist, würde ich den LTC1257 galvanisch trennen. Bislang gab es aber keine Probleme diesbezüglich. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=11125</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=11125"/>
		<updated>2015-05-01T15:01:59Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender [http://www.pollin.de/ Pollin] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC28J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt [http://old.ethersex.de/index.php/Ethersex Ethersex] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [http://neubert-volmar.de/Hausautomation/index.html ECMD].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [http://www.gtkdb.de/index_18_1036.html hier].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Dokumentation zu vielen Devices ist im [http://ethersex.de/index.php/Nutzung_in_FHEM_%28Deutsch%29 Ethersex-Wiki] zu finden. Ebenso wird hier unter anderem [http://www.ethersex.de/index.php/Supported_Boards_%28Deutsch%29 Eigenbau-Hardware] vorgestellt, welche mit FHEM erprobt wurde.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT), verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfigurierten Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&#039;&#039; (siehe auch: [http://old.ethersex.de/index.php/Dallas_1-wire_Bus hier]).&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben.&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Definitionen in der [[Konfiguration]] (fhem.cfg) gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die Raum-Zuweisung ist optional.&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das [[1-Wire]] Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Ich nutze zur Zeit sechs Temperatursensoren DS18S20 im parasitären Modus (nur zwei Drähte notwendig) an einer alten Telefonverkabelung und zwei verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO sind [http://www.gtkdb.de/index_18_1040.html hier] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Übergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach zwei Sekunden die Temperatur abfragt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar (Achtung: der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [http://home.snafu.de/sicpaul/midi/hexbin.htm hier]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe [[Intertechno Code Berechnung]]).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433&amp;amp;nbsp;MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, dass ein Funkbefehl nicht ankommt und z.B. ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme (wie auch FS20) sollten deshalb besser nicht für sehr kritische Anwendungen verbaut werden.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [http://old.ethersex.de/index.php/BitfehlerASK hier] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 (bei 433 MHz entspricht das 17&amp;amp;nbsp;cm) einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und Flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B. A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieser Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge, die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden deren Korrektheit per Attribute gesteuert werden. Es sind also in FHEM weitere globale Attribute anzulegen. Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* Referenz&lt;br /&gt;
* Schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktion bekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann das NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte beachten, dass gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollte man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, z.B. an ein Gardena Magnetventil, absetzen können, muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhododendren möchten schließlich anders bewässert werden als z.B. Rasen oder Kartoffeln.&lt;br /&gt;
&lt;br /&gt;
Dazu wird dem Sensor ein neues Attribut zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, dass ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. Wie dieses Attribut ausgewertet wird, obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, dass nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V angehoben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausführung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außerhalb der Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (siehe &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Z.B. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] &lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=10455</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=10455"/>
		<updated>2015-03-08T07:41:44Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* RFM12 Funkmodul */  Syntax in E6 hat sich geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender [http://www.pollin.de/ Pollin] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt [http://old.ethersex.de/index.php/Ethersex Ethersex] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [http://neubert-volmar.de/Hausautomation/index.html ECMD].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [http://www.gtkdb.de/index_18_1036.html hier].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Dokumentation zu vielen Devices ist im [http://ethersex.de/index.php/Nutzung_in_FHEM_%28Deutsch%29 Ethersex-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT), verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfigurierten Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&#039;&#039; (siehe auch: [http://old.ethersex.de/index.php/Dallas_1-wire_Bus hier]).&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben.&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Definitionen in der [[Konfiguration]] (fhem.cfg) gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die Raum-Zuweisung ist optional.&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das [[1-Wire]] Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Ich nutze zur Zeit sechs Temperatursensoren DS18S20 im parasitären Modus (nur zwei Drähte notwendig) an einer alten Telefonverkabelung und zwei verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO sind [http://www.gtkdb.de/index_18_1040.html hier] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Übergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach zwei Sekunden die Temperatur abfragt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar (Achtung: der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [http://home.snafu.de/sicpaul/midi/hexbin.htm hier]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe [[Intertechno Code Berechnung]]).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433&amp;amp;nbsp;MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, dass ein Funkbefehl nicht ankommt und z.B. ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme (wie auch FS20) sollten deshalb besser nicht für sehr kritische Anwendungen verbaut werden.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [http://old.ethersex.de/index.php/BitfehlerASK hier] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 (bei 433 MHz entspricht das 17&amp;amp;nbsp;cm) einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und Flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B. A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;ask intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieser Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge, die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden deren Korrektheit per Attribute gesteuert werden. Es sind also in FHEM weitere globale Attribute anzulegen. Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* Referenz&lt;br /&gt;
* Schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktion bekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann das NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte beachten, dass gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollte man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, z.B. an ein Gardena Magnetventil, absetzen können, muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhododendren möchten schließlich anders bewässert werden als z.B. Rasen oder Kartoffeln.&lt;br /&gt;
&lt;br /&gt;
Dazu wird dem Sensor ein neues Attribut zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, dass ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. Wie dieses Attribut ausgewertet wird, obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, dass nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V angehoben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausführung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außerhalb der Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (siehe &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Z.B. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] &lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Kpwg&amp;diff=8319</id>
		<title>Benutzer:Kpwg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Kpwg&amp;diff=8319"/>
		<updated>2014-11-02T15:40:10Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Willkommen! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=7969</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=7969"/>
		<updated>2014-09-20T05:50:17Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Prototyp der Schaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit 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;
Die Beschaltung mit C1 und R1 scheint nicht in jedem Fall angemessen zu sein. Damit kann man sich einen Sägezahn als Referenzspannung einfangen, der im Kilohertzbereich die Referenz- (und damit auch die DAC-Ausgangspannung) von 100 % auf ca. 90 % fährt. Das gibt dann unerwünschte Effekte beim Messen der Spannung für die Stetigregelung. Ohne C1 und R1 ergibt sich eine konstante Referenzspannung.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, die durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
Variante 3 auf Punktraster in einer kompakten Version. Die Widerstände wurden stehend isoliert platziert, die Sicherung dient dem Schutz der Therme.&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_V3.jpg|center|alt=Variante 3 - eine kompakte Aufbauvariante]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
Möglicherweise bricht &amp;quot;make&amp;quot; mit der Fehlermeldung &amp;quot;&amp;lt;nowiki&amp;gt;delay.h:230:28: error: __builtin_avr_delay_cycles expects an integer constant.&amp;lt;/nowiki&amp;gt;&amp;quot; ab. Abhilfe schafft ein &amp;quot;&amp;lt;nowiki&amp;gt;#define __DELAY_BACKWARD_COMPATIBLE__ &amp;lt;/nowiki&amp;gt;&amp;quot; in hardware/dac/ltc1257.c vor dem &amp;quot;&amp;lt;nowiki&amp;gt;#include &amp;lt;util/delay.h&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 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>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_V3.jpg&amp;diff=7968</id>
		<title>Datei:Junkers Therme Stetigregelung V3.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Junkers_Therme_Stetigregelung_V3.jpg&amp;diff=7968"/>
		<updated>2014-09-20T05:44:32Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=7488</id>
		<title>JeeLink</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=7488"/>
		<updated>2014-08-26T14:08:22Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JeeLink&#039;&#039;&#039; ist ein RF-Gerät im Formfaktor eines USB-Sticks mit externer Antenne.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=JeeLink.jpg&lt;br /&gt;
|Bildbeschreibung=JeeLink mit Drahtantenne&lt;br /&gt;
|HWProtocol=PCA301, EC3000, RoomNode oder LaCrosse&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=&lt;br /&gt;
|HWComm=433/868/913 MHz&lt;br /&gt;
|HWChannels=?&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=ca. 90 mA&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=23*67*9mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#JeeLink 36_JeeLink.pm]&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=430 Andre / justme1968]&lt;br /&gt;
|HWManufacturer=JeeLabs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Vergleichbar mit dem [[CUL]] von Busware, ist der JeeLink ein USB-Stick, mit dem Funk-Hausautomations-Komponenten angebunden werden können. CUL und JeeLink unterscheiden sich im Funkmodul (CUL -&amp;gt; CC1101; JeeLink -&amp;gt; RF12B), die nicht miteinander kompatibel sind. Daher kann man auch keinen CUL als JeeLink-Ersatz nutzen!&lt;br /&gt;
&lt;br /&gt;
Den JeeLink gibt es in einer &lt;br /&gt;
* 433 MHz Version&lt;br /&gt;
* 868 MHz Version (Standard)&lt;br /&gt;
* 915 MHz Version (Betrieb in Europa nicht zugelassen)&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung JeeLink == &lt;br /&gt;
Um mit dem JeeLink die jeweils gewünschten Signale empfangen zu können, ist er zunächst mit der passenden Firmware zu versorgen. Dies kann auf zwei Arten geschehen. Entweder durch das selber kompilieren der Software und das Flashen aus der Arduino IDE oder aus Fhem heraus mit einem aktuellen Firmwareimage aus dem contrib Verzeichnis (oder auch hier mit einem selbst kompilierten).&lt;br /&gt;
&lt;br /&gt;
=== Selber Kompilieren ===&lt;br /&gt;
[[Datei:JeeLink_flashen_1.jpg|mini|100px|rechts|Vorbereitung: Arduino einrichten]]&lt;br /&gt;
Um den JeeLink mit Fhem benutzen zu können, muss (mit der Arduino Software / Entwicklungsumgebung (IDE)) eine spezifische &amp;quot;Firmware&amp;quot; (ein Sketch) auf dem JeeLink installiert werden. Die generelle Vorbereitung für diese Aktion ist unabhängig vom benötigten Sketch und besteht aus den folgenden Schritten:&lt;br /&gt;
* Für Windows oder Mac OS X den passenden [http://www.ftdichip.com/Drivers/VCP.htm FTDI Treiber] installieren, unter Linux ist dieser meist schon vorhanden&lt;br /&gt;
* Installation der [http://arduino.cc/de/Guide/HomePage Arduino Software] für die benutzte Plattform (verfügbar sind Windows, Mac OS X und Linux)&lt;br /&gt;
* Je nach sketch einbinden der [https://github.com/jcw/jeelib/archive/master.zip Jeelabs Library] in die Arduino IDE&lt;br /&gt;
* Herunterladen des benötigten Sketches &lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software und JeeLink flashen&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Arduino flashen ===&lt;br /&gt;
[[Datei:JeeLink_flashen_2.jpg|mini|100px|rechts|JeeLink Flashen]]&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software&lt;br /&gt;
* Seriellen Port des JeeLink auswählen&lt;br /&gt;
* Einstellungen: in den Tools als Board &amp;quot;Arduino Uno&amp;quot; auswählen&lt;br /&gt;
* Sketch mit &amp;quot;Datei öffnen&amp;quot; auswählen&lt;br /&gt;
* Upload klicken&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Fhem flashen ===&lt;br /&gt;
* Auf dem Fhem System muss &amp;lt;code&amp;gt;avrdude&amp;lt;/code&amp;gt; installiert sein. Das kann z.B. über die &amp;quot;normale&amp;quot; Linux Paketverwaltung geschehen.&lt;br /&gt;
* das Attribut &amp;lt;code&amp;gt;hexFile&amp;lt;/code&amp;gt; des JeeLink Device muss auf die passende (Hex-)Datei gesetzt werden&lt;br /&gt;
* mit &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash&amp;lt;/code&amp;gt; wird das Flashen angestossen&lt;br /&gt;
* im Fhem Log kann der Ausgang des Flashvorgangs kontrolliert werden&lt;br /&gt;
* über das &amp;lt;code&amp;gt;flashCommand&amp;lt;/code&amp;gt; Attribut lässt sich das Kommando zum Flashen an besondere Anforderungen anpassen&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem == &lt;br /&gt;
Um den JeeLink (erstmalig) mit Fhem benutzen zu können, muss dieser erfolgreich geflasht worden sein.&lt;br /&gt;
* JeeLink an den Fhem-Rechner anschließen&lt;br /&gt;
* Auf Linux Systemen kann es notwendig sein, mit &amp;lt;code&amp;gt;mknod /dev/ttyUSB0 c 188 0&amp;lt;/code&amp;gt; das Device anzulegen (bitte erst überprüfen, ob der Stick nicht automatisch erkannt wird)&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Erforderliche Definitionen in Fhem:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myJeeLink JeeLink /dev/ttyUSBx@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;USBx&#039;&#039;&#039; ist anzupassen an die aktuell benutzte Schnittstelle, 0 wenn sonst nichts am USB-Port hängt&lt;br /&gt;
*x=0,1,2, usw.&lt;br /&gt;
&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate autocreate-Funktion] sollte aktiv sein. Alle erkannten Devices (PCA301, LaCrosse, EC3000 und RoomNodes) werden dann automatisch angelegt, sobald die jeweiligen Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Pro Geräte-Art/Protokoll muss ein eigener JeeLink mit dem passenden Sketch zum Empfang dieser Daten vorhanden sein (es kann jeweils nur ein Sketch im JeeLink aktiv sein und es gibt (zumindest derzeit (04/2014)) keinen Sketch, der mehr als eines der Protokolle abdeckt).&lt;br /&gt;
&lt;br /&gt;
=== PCA301 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der &#039;&#039;PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung&#039;&#039; (PCA301-pcaSerial.zip) kann von [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ sourceforge] heruntergeladen werden. Details zur Benutzung finden sich im Artikel zur [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]].&lt;br /&gt;
&lt;br /&gt;
Unter Umständen werden die Signale der PCA301 nicht empfangen. Insbesondere mit selbst erstellten &amp;quot;JeeLinks&amp;quot; durch wahrscheinlich hohe Bauteiltoleranzen der RF12B Sendeeinheiten. Mit dem im Sketch voreingestellten rf12_center_freq = 0xA6FE (868,9500 MHz) bekommt man in diesem Fall keine Steckdose angelernt.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über modifizierten Sketch ====&lt;br /&gt;
Durch Tests mittels &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw +&#039;&#039; bzw &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw -&#039;&#039; kann man dann ermitteln, ob die Funksignale z.B. ab A703 bis A715 empfangen werden. Das entspricht einem Frequenzbereich zwischen 868,9750 MHz und 869,0550 MHz.&lt;br /&gt;
Die Mitte ist die Lösung, die man dann im Sketch ändern muss:&lt;br /&gt;
:&amp;lt;code&amp;gt;static uint16_t rf12_center_freq = 0xA70C;&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend auf den Jeelink neu flashen.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über Attribut initCommands ====&lt;br /&gt;
Über das &amp;lt;code&amp;gt;initCommands&amp;lt;/code&amp;gt; lässt sich die gefundene Frequenz einstellen, ohne dass die Firmware verändert werden muss. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;JeeLinkDevice&amp;gt; initCommands &amp;lt;hhhh&amp;gt;h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lacrosse Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Lacrosse Temperatursensoren kann von [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ sourceforge] heruntergeladen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;Zusätzlich muss noch die Jeelib (verfügbar auf [http://github.com/jcw/jeelib Jeelib Github]) in der Arduino IDE installiert werden (unter Umständen muss eine ältere Version der Arduino IDE verwendet werden).&amp;lt;/strike&amp;gt;Der LaCrosse Sketch benötigt keine JeeLib.&lt;br /&gt;
&lt;br /&gt;
Die in der folgenden Liste (Quelle: [http://forum.fhem.de/index.php/topic,14786.msg164801.html#msg164801 Fhem Forum]) aufgeführten Sensoren wurden schon erfolgreich getestet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Link&lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT    || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT    || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX37       || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT  ||  9.579 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT ||  9.579 kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT || 17.241 kbps || ({{Link2Forum|Topic=17662|LinkText=&amp;amp;nbsp;}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT ||      ? kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD  ||  9.579 kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD  ||  9.579 kbps&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Energy Count 3000 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Energy Count 3000 Zwischenstecker ist [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ sourceforge] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Das Fhem Modul dazu (36_EC3000.pm) ist genau wie die Module für JeeLink (36_JeeLink.pm) und PCA301 (36_PCA301.pm) mittlerweile im aktuellen Fhem enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLabs RoomNode ===&lt;br /&gt;
Eine Beschreibung zum Empfang der JeeLabs RoomNodes ist in [http://forum.fhem.de/index.php/topic,11648.msg92037.html#msg92037 diesem Forenthread] enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Weitergehende Informationen ===&lt;br /&gt;
Hinweise zum Betrieb eines JeeLink mit Fhem finden sich aktuell in größerer Anzahl in verschiedenen Diskussionen im Forum:&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,11648.0.html JeeLink / PCA301] - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,14786.0.html JeeLink / Lacrosse] - JeeLink Modul zur Einbindung von La Crosse&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,11648.msg92019.html#msg92019 JeeLink / EC3000] - Anfänge der Entstehung der EC3000 Unterstützung in Fhem.&lt;br /&gt;
* Hinweise zu [http://forum.fhem.de/index.php/topic,11648.msg92037.html#msg92037 JeeLabs RoomNode] und anderen JeeLab Nodes&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,25399.msg183910.html#msg183910 JeeLink mit FHEM2FHEM nutzen]&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Beim Betrieb an einer [[AVM Fritz!Box|FritzBox]] wird der JeeLink unter Umständen als &amp;quot;Für die Nutzung mit dem USB-Fernanschluss reserviert&amp;quot; angezeigt. In diesem Fall muss die Reservierung deaktiviert/aufgehoben werden (Details dazu in diesem [http://forum.fhem.de/index.php/topic,16579.0.html Forenthread]).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jeelabs.com/products/jeelink JeeLabs], JeeLink Hersteller&lt;br /&gt;
* [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ PCA301 sketch] auf sourceforge&lt;br /&gt;
* [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ LaCrosse sketch] auf sourceforge&lt;br /&gt;
* [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/ EC3000 sketch] auf sourceforge&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von Lacrosse Temperatursensoren an Fhem&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Transceiver]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=7381</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=7381"/>
		<updated>2014-08-17T14:15:06Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Dokumentation zu vielen Devices ist im [http://ethersex.de/index.php/Nutzung_in_FHEM_%28Deutsch%29 Ethersex-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Definitionen in der [[Konfiguration]] (fhem.cfg) gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das [[1-Wire]] Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Ich nutze zur Zeit sechs Temperatursensoren DS18S20 im parasitären Modus (nur zwei Drähte notwendig) an einer alten Telefonverkabelung und zwei verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO sind [[http://www.gtkdb.de/index_18_1040.html hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Übergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V angehoben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] &lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=7380</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=7380"/>
		<updated>2014-08-17T14:08:51Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Dokumentation zu vielen Devices ist im [http://ethersex.de/index.php/Nutzung_in_FHEM_%28Deutsch%29 Ethersex-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Definitionen in der [[Konfiguration]] (fhem.cfg) gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das [[1-Wire]] Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Ich nutze zur Zeit sechs Temperatursensoren DS18S20 im parasitären Modus (nur zwei Drähte notwendig) an einer alten Telefonverkabelung und zwei verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO sind [[http://www.gtkdb.de/index_18_1040.html hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Übergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V angehoben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] &lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6247</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6247"/>
		<updated>2014-05-09T15:54:08Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* 8-Kanal Relaiskarte K8IO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6246</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6246"/>
		<updated>2014-05-09T15:43:30Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* LCD-Modul anschließen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto %line %col\n\000lcd write %text\n&amp;quot;}&lt;br /&gt;
set write expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set write postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear %col\n&amp;quot;}&lt;br /&gt;
set clear expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear\n&amp;quot;} &lt;br /&gt;
set clear_all expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set clear_all postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight %state\n&amp;quot;}&lt;br /&gt;
set lcd_bl expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set lcd_bl postproc {s/([OK\n|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot; ? &amp;quot;ok&amp;quot; : &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6245</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6245"/>
		<updated>2014-05-09T15:39:47Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Analoge Ausgänge 0-32V */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 4095) 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\n&amp;quot;}&lt;br /&gt;
set setDacValue expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto&amp;amp;#160;%line&amp;amp;#160;%col\nlcd write&amp;amp;#160;%text&amp;quot;}&lt;br /&gt;
set write postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear&amp;amp;#160;%col&amp;quot;}&lt;br /&gt;
set clear postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear&amp;quot;} &lt;br /&gt;
set clear_all postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight&amp;amp;#160;%state&amp;quot;}&lt;br /&gt;
set lcd_bl postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6244</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6244"/>
		<updated>2014-05-09T15:34:42Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* Analoge Eingänge in FHEM einbinden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get value expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID\n&amp;quot;}&lt;br /&gt;
get portvalue expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto&amp;amp;#160;%line&amp;amp;#160;%col\nlcd write&amp;amp;#160;%text&amp;quot;}&lt;br /&gt;
set write postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear&amp;amp;#160;%col&amp;quot;}&lt;br /&gt;
set clear postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear&amp;quot;} &lt;br /&gt;
set clear_all postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight&amp;amp;#160;%state&amp;quot;}&lt;br /&gt;
set lcd_bl postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6243</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6243"/>
		<updated>2014-05-09T15:28:38Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* RFM12 Funkmodul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Geraet&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto&amp;amp;#160;%line&amp;amp;#160;%col\nlcd write&amp;amp;#160;%text&amp;quot;}&lt;br /&gt;
set write postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear&amp;amp;#160;%col&amp;quot;}&lt;br /&gt;
set clear postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear&amp;quot;} &lt;br /&gt;
set clear_all postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight&amp;amp;#160;%state&amp;quot;}&lt;br /&gt;
set lcd_bl postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6242</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6242"/>
		<updated>2014-05-09T15:26:14Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* 8-Kanal Relaiskarte K8IO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set on expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\n\000io set port 2 00&amp;amp;#160;%RelaisPort\n&amp;quot;}&lt;br /&gt;
set off expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Gerät&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1&amp;quot;}&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0&amp;quot;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto&amp;amp;#160;%line&amp;amp;#160;%col\nlcd write&amp;amp;#160;%text&amp;quot;}&lt;br /&gt;
set write postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear&amp;amp;#160;%col&amp;quot;}&lt;br /&gt;
set clear postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear&amp;quot;} &lt;br /&gt;
set clear_all postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight&amp;amp;#160;%state&amp;quot;}&lt;br /&gt;
set lcd_bl postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6241</id>
		<title>AVR-NET-IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AVR-NET-IO&amp;diff=6241"/>
		<updated>2014-05-09T15:22:08Z</updated>

		<summary type="html">&lt;p&gt;Kpwg: /* 1-Wire Temperatursensoren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AVR-NET-IO.jpg|300px|thumb|AVR-NET-IO Ansicht fertig bestückte Platine (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
= AVR-NET-IO =&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das AVR-NET-IO ist eine kostengünstige Hardwareplattform mit einem AVR Microcontroller, den es als Bausatz oder als Fertiggerät beim Elektronik-Versender Pollin [http://www.pollin.de/ [1]] zu erwerben gibt. Ausgestattet ist er mit einem Microcontroller ATMega32 und einem Netzwerkcontroller ENC25J60. Er bietet standardmäßig 8 digitale Ausgänge, 4 digitale und 4 analoge Eingänge, die sich über das Netzwerk abrufen bzw. schalten lassen. Das Board hat eine ISP-Schnittstelle integriert, über die der Microcontroller mit einer eigenen bzw. alternativen Software beschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt im Netz diverse Anleitungen zur Verbesserung und Optimierung der Schaltung, zum Austausch des Controllers zu einem leistungsfähigeren ATmega644 oder ATmega1284p mit mehr internen Speicherplatz für die Firmware (z.B. [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin hier]). Aber auch im originalen Auslieferungszustand bietet der AVR-NET-IO schon viel Potential für eigene Projekte.&lt;br /&gt;
&lt;br /&gt;
Für den Einsatz mit FHEM wird der Microcontroller mit der konfigurierbaren Software aus dem Projekt ethersex [http://old.ethersex.de/index.php/Ethersex [2]] betrieben. Diese alternative Software ist inzwischen zu einer sehr gut ausgebauten und stabil laufenden Firmware für diverse AVR Hardwareplattformen herangereift. Die Steuerung erfolgt über die eigene, integrierte Protokollsprache Ethersex Command (ECMD)&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Module in FHEM zur Kommunikation mit ethersex haben die Bezeichnung [[http://neubert-volmar.de/Hausautomation/index.html [3]] . Vielen Dank dafür&amp;amp;#160;!!&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Flashen von ethersex ==&lt;br /&gt;
Die Möglichkeiten von ethersex sind vielfältig und bieten über die modulare Bauweise eine einfache Erweiterbarkeit durch die Community. Die Funktionen der Module können über eine Oberfläche im Konfigurationsmodus bequem an und ausgeschaltet werden, sodaß nur die gewünschten Funktionen in der zu erstellenden Firmware landen. Allen gemeinsam ist die einfache Steuerbarkeit über den ECMD Befehlsssatz&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von ethersex erfolgt in einer Unix/Linux Umgebung (unter Windows auch mit Cygwin möglich) und die compilierte Firmwaredatei wird mittels eines ISP Programmers auf den AVR Microcontroller geflasht. Grundlegende Anleitungen zu ethersex bekommt ihr [[http://www.gtkdb.de/index_18_1036.html hier]].&lt;br /&gt;
Wenn alles erfolgreich geflasht ist, so ist euer AVR-NET-IO unter der gewählten IP Adresse im Netzwerk erreichbar. Es zeigt dann auch eine Homepage-Seite mit einigen Funktionen an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Wenn man an den Net-IO vieleicht noch ein LCD anschließen will (wenn DB-25 belegt ist bleibt dafür nur der Steckverbinder EXT) verbietet sich der Anschluss der 1-Wire-Sensoren am in Ethersex vorkonfiguriertem Port PD6. Verzichtet man auf einen Analogeingang, lässt sich der 1-Wire-Bus auch an der Schraubklemme ADC1 ganz gut aufschalten. Vorteil ist, dass man gleich alle passenden Spannungen (GND, +5V) an den beiden nebenliegenden Schraubklemmen hat. Das Pinning muss dann vor dem &amp;quot;Make&amp;quot; von Ethersex in der Datei pinning/hardware/netio.m4 von PD6 auf PA4 geändert werden.&amp;quot;&amp;quot;&#039;&#039;&lt;br /&gt;
siehe auch: [[http://old.ethersex.de/index.php/Dallas_1-wire_Bus [4]]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 23:34, 27. Mär. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Funktionen in Verbindung mit FHEM ==&lt;br /&gt;
Einige Modulfunktionen, die ich selbst mit FHEM zusammen im Einsatz habe, möchte ich in diesem Wiki näher beschreiben&lt;br /&gt;
&lt;br /&gt;
Um das AVR-NET-IO im FHEM bekannt zu machen, müssen folgende Einträge in die fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NETIO_01 ECMD telnet 192.168.0.99:2701&lt;br /&gt;
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_&lt;br /&gt;
       /fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef&lt;br /&gt;
attr NETIO_01 room Interfaces&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bitte beachten: Der Name (NETIO_01) und die IP (192.168.0.99) müssen euren eingestellten Werten aus der ethersex Konfiguration entsprechen. Die Classdef Konfigurationsdateien braucht ihr für meine Beispiele - legt sie einfach schon einmal leer an. Diese befinden sich bei mir im Verzeichnis einer Fritzbox 7390 - das kann bei euch individuell anders sein. Erklärungen und Inhalt zu den classdef-Dateien befinden sich in dem jeweiligen Komponenten Beispiel. Die room-Zuweisung ist optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:TempSensorDS18S20.JPG|300px|right|thumb|Temperatursensor DS18S20 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 1-Wire Temperatursensoren ===&lt;br /&gt;
Das 1-Wire Bussystem wird klassisch für die Temperaturmessung mit den preiswerten, vorkalibrierten Dallas/Maxim Sensoren der Typen DS18S20/DS18B20 genutzt. Weiterführende Informationen zum 1-Wire Bussystem befinden sich in einem anderen [[http://fhemwiki.de/wiki/Kategorie:1-Wire Wiki-Beitrag]]. Ich nutze zur Zeit 6 Stück Temperatursensoren DS18S20 im parasitären Modus (nur 2 Drähte notwendig) an einer alten Telefonverkabelung und 2 Stück verkapselte, wasserdichte DS18B20 in Edelstahlhülse für die Temperaturmessung in Aquarien.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration im ethersex und der Anschluss der 1-Wire Temperatursensoren am AVR-NET-IO können [[http://www.gtkdb.de/index_18_1040.html hier]] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei onewire.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;&lt;br /&gt;
# Uebergabeparameter Onewire Geräte ID&lt;br /&gt;
params devID&lt;br /&gt;
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen&lt;br /&gt;
set messen cmd {&amp;quot;1w convert\n&amp;quot;}&lt;br /&gt;
set messen expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
get temp cmd {&amp;quot;1w get&amp;amp;#160;%devID\n&amp;quot;}&lt;br /&gt;
get temp expect &amp;quot;\d+.\d\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann wird in der fhem.cfg z.B. das Device Temperatursensor Wohnzimmer wie folgt deklariert. Die bei jedem Sensor einzigartige 16-stellige Adresse bekommt ihr u.a. über die Weboberfläche von ethersex oder über Telnet und den Befehl 1w list&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define WZ_Temp ECMDDevice ONEWIRE 28481f28020000fa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit periodisch eine Messung stattfindet, braucht ihr einen Timer z.B. alle 15min, der zuerst das Ereignis messen sendet und nach 2 sek. die Temperatur abfragt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Loggen der Temperatur in einem Textfile erreicht ihr mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Temperatur FileLog /var/InternerSpeicher/fhem/log/Temperatur-%Y.log WZ_Temp:(temp).*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit mit den Daten in der Temperaturdatei noch ein schöner Plot erzeugt wird, müsst ihr im FHEM Haupt-Verzeichnis die Datei 1wtemp.gplot mit folgendem Inhalt anlegen&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
#FileLog 4:WZ_Temp:0:&lt;br /&gt;
plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; egrep &#039;WZ_Temp&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 title &#039;Wohnzimmer&#039; with lines lw2\&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
..und danach in der fhem.cfg die Funktion dazu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT&lt;br /&gt;
attr weblink_Temperatur label &amp;quot;Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:K8IO.JPG|300px|right|thumb|Relaiskarte K8IO (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== 8-Kanal Relaiskarte K8IO ===&lt;br /&gt;
Der ebenfalls bei Pollin erhältliche Bausatz einer 8-Kanal Relaiskarte passt optimal zum AVR-NET-IO, da sie mit der verbauten SUB-D Buchse direkt angeschlossen werden kann. Sie enthält 8 Schaltkanäle (PC0 bis PC7 des Atmega) und 4 Schalteingänge (PA0 bis PA3 des Atmega). Die verbauten Relais sind für eine Schaltlast von 24V/3A freigegeben und für die unterschiedlichsten Aufgaben einsetzbar, z.B. Gartenbewässerung mit Gardena 24V Ventilen, Schalten von Kleinspannungen oder als Treiberschalter für abgesetzte 230V Lastrelais. Der auf der Platine enthaltene 5V Spannungsregler kann auch das AVR-NET-IO über die SUB-D Verbindung mit Spannung versorgen (Jumper JP1 setzen).&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr den folgenden Punkt vor dem Compilieren einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:330px;&amp;quot;&amp;gt;General Setup ---&amp;amp;gt;&lt;br /&gt;
    [*] VFS (Virtual File System) support ---&amp;amp;gt;&lt;br /&gt;
        [*] VFS File Inlining ---&amp;amp;gt;&lt;br /&gt;
            [*] Inline IO&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Datei relais.classdef enthält die folgenden Einträge:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter HEX Adresse Port&lt;br /&gt;
params RelaisPort&lt;br /&gt;
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten&lt;br /&gt;
set on cmd {&amp;quot;io set ddr 2 ff\nio set port 2&amp;amp;#160;%RelaisPort&amp;amp;#160;%RelaisPort&amp;quot;}&lt;br /&gt;
set on postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set off cmd {&amp;quot;io set ddr 2 ff\nio set port 2 00&amp;amp;#160;%RelaisPort&amp;quot;}&lt;br /&gt;
set off postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Befehlsfolge ist zweiteilig: Erst wird der gesamte Port PC auf Ausgang gesetzt (io set ddr 2 ff), dann der betreffende Pin (hier PC1 = Relais 2) ein (io set port 2 02 02) oder aus (io set port 2 00 02) geschaltet. Die postproc Angaben sind optional und verwandeln die Rückgaben der beiden Befehle von ECMD OK;OK in ein besser lesbares &amp;quot;ok&amp;quot; bzw &amp;quot;error&amp;quot; bei Fehlern.&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für ein oder mehrere Relais angelegt und diese sind dann über die FHEM Oberfläche schaltbar. (&amp;amp;#160;!!Achtung!! - der Parameter hinter RELAIS ist nicht die Nummer des Relais, sondern der HEX-Code zur Ansteuerung des Ports - siehe nachfolgende Tabelle):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Relais1 ECMDDevice RELAIS 01&lt;br /&gt;
define Relais2 ECMDDevice RELAIS 02&lt;br /&gt;
define Relais3 ECMDDevice RELAIS 04&lt;br /&gt;
......&lt;br /&gt;
define Relais8 ECMDDevice RELAIS 80&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle 8 Relais und der zugehörige Schaltpin in hex als Überblick (Umrechnung binär-&amp;amp;gt;hex z.b [[http://home.snafu.de/sicpaul/midi/hexbin.htm hier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Relais&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Platinenaufdruck&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; hex-Code für Device&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 01&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 02&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 04&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 08&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 20&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 40&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; K8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 80&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FF&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; alle Relais &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AUS &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 00&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:RFM12.JPG|300px|right|thumb|Funkmodul RFM12 (Bild Pollin GmbH)]]&lt;br /&gt;
&lt;br /&gt;
=== RFM12 Funkmodul ===&lt;br /&gt;
Das Funkmodul RFM12, hier in der Ausführung für 433 Mhz, ist ein kostengünstiges und kompaktes Funk Sende-/Empfangsmodul, was auch über Pollin zu beziehen ist. Mit dem ethersex RFM12 ASK Modul kann man damit Funkschalter/-dimmer und Jalousie-/Rolladenschalter des Systems Intertechno über das ECMD Protokoll ansteuern. Auch günstige ELRO Funkschalter lassen sich nach Anpassung der Dipschalter mit dem Intertechno-Code belegen (siehe Wiki [[http://fhemwiki.de/wiki/Intertechno_Code_Berechnung Intertechno]] ).&lt;br /&gt;
Je nach Ausrichtung der Antenne, den räumlichen Gegebenheiten und dem &amp;quot;Funkverkehr&amp;quot; der Nachbarn funktioniert das System im 433 MHz Frequenzbereich recht zuverlässig. Es kann jedoch in seltenen Fällen mal dazu kommen, das ein Funkbefehl nicht ankommt und z.b ein Rolladen nicht schließt oder ein Licht an bleibt. Solche nicht rückkanalfähigen Funksysteme wie auch FS20 deshalb besser nicht für sehr kritische Anwendungen verbauen.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss am AVR-NET-IO kann [[http://old.ethersex.de/index.php/BitfehlerASK hier]] entnommen werden. Das Modul ist klein und das Löten entsprechend frickelig. Bewährt hat sich bei mir das anlöten einer jeweils 7 poligen beidseitigen Stiftleiste auf einer separaten Lochrasterplatine als Basis. Als Antenne am Anschluss ANT ist ein Draht der Länge λ / 4 - bei 433 MHz entspricht das 17 cm - einzusetzen.&lt;br /&gt;
&lt;br /&gt;
Bei der ethersex Konfiguration müsst ihr die folgenden Punkte einschalten bzw. prüfen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Network -&amp;amp;gt; IP over RFM12 (FSK transmitter support) (aktivieren, keine weiteren Einstellungen im Untermenü)&lt;br /&gt;
I/O -&amp;amp;gt; RFM12 ASK aktivieren -&amp;amp;gt; RFM12 ASK send aktivieren -&amp;amp;gt; Intertechno aktivieren&lt;br /&gt;
General Setup -&amp;amp;gt; VFS support -&amp;amp;gt; VFS File Inlining -&amp;amp;gt; Inline RFM12&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem Compilieren und flashen des Atmega muss nun der Punkt RFM12 auf der ethersex Homepage erscheinen, über den ihr schon einmal testen könnt. Familiencode (A bis P möglich) am Funkschalter einstellen und Kanal wählen z.B A1 und auf der Webseite dann Familie A, Gruppe 1, Geraet 1.&lt;br /&gt;
&lt;br /&gt;
Die Datei intertechno.classdef hat folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Uebergabeparameter Intertechno Coding: Familie + Gruppe + Gerät&lt;br /&gt;
params it_fam it_group it_dev&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
set on cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 1&amp;quot;}&lt;br /&gt;
set off cmd {&amp;quot;rfm12 intertechno&amp;amp;#160;%it_fam&amp;amp;#160;%it_group&amp;amp;#160;%it_dev 0&amp;quot;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In der fhem.cfg wird nun ein neues Device für z.B. FunkschalterA1 angelegt, welches dann über die FHEM Oberfläche schaltbar ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FunkschalterA1 ECMDDevice RFM12 1 1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Parameter sind immer in Reihenfolge Familie (A=1 bis P=16) Gruppe (1-4) Gerät (1-4) anzugeben&lt;br /&gt;
also z.B. A1 -&amp;amp;gt; 1 1 1 / F6 -&amp;amp;gt; 6 2 2 / D11 -&amp;amp;gt; 4 3 3&lt;br /&gt;
&lt;br /&gt;
=== Analoge Eingänge in FHEM einbinden ===&lt;br /&gt;
Dieses Abschnitt beschäftigt sich mit der Integration der 4 Analogeingänge die auf dem AVR-NET-IO per blauer Schraubklemme erreichbar sind. Beschriftet sind Sie mit ADC1 bis ADC4, technisch gesehen sind das aber die ADC Ports 4 bis 7.&lt;br /&gt;
In meinem Beispiel verwende ich 3 analoge Bodenfeuchtesensoren von [http://www.vegetronix.com/Products/VH400/ Vegetronix].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Analoger_Bodenfeuchtesensor_Vegetronix-VH400.jpg|133px|right|thumb|Bodenfeuchtesensor VH400 (Bild: Vegetronix.com)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die anlogen Ports von Ethersex unterstützt werden, müssen diese in die Firmware mit einkompiliert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;ADC support&amp;quot; aktivieren. Siehe dazu im Abschnitt &amp;quot;Konfiguration von Ethersex&amp;quot;.&lt;br /&gt;
Auf dem NET-IO selbst muss der &amp;quot;AREF&amp;quot;-Jumper auf &amp;quot;intern&amp;quot; gestellt sein.&lt;br /&gt;
&lt;br /&gt;
Da Ethersex selbst den Portstatus nur in hexadezimaler Form zurückliefert, und aufgrund des 10bit A/D-Wandlers nur 1024 Zustände unterschieden werden, müssen später noch ein paar Berechnungen integriert werden dessen Korrektheit per Attribute gesteuert werden.&lt;br /&gt;
Es sind also in FHEM weitere globale Attribute anzulegen.&lt;br /&gt;
Benötigt werden:&lt;br /&gt;
&lt;br /&gt;
* referenz&lt;br /&gt;
* schwellwert&lt;br /&gt;
&lt;br /&gt;
Der zugehörige FHEM Aufruf muss an das eigene System angepasst werden damit man sich nicht eigene globale Attribute zerschießt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;attr global userattr icon referenz schwellwert sensor status webCmd&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre style=&amp;quot;margin-right:160px;&amp;quot;&amp;gt;# Uebergabeparameter Portnummer des internen Analogeingangs&lt;br /&gt;
params PortID&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut &amp;quot;Referenz&amp;quot;&lt;br /&gt;
#  Gleichzeitig wird das Reading &amp;quot;status&amp;quot; gesetzt, je nach eingestelltem Schwellwert&lt;br /&gt;
#  status = on =&amp;amp;gt; gemessener Wert liegt unter dem Schwellwert&lt;br /&gt;
#  status = off =&amp;amp;gt; gemessener Wert liegt über dem Schwellwert&lt;br /&gt;
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können &lt;br /&gt;
get value cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get value postproc {\&lt;br /&gt;
 my $hexval = hex(trim(&amp;quot;$_&amp;quot;));\&lt;br /&gt;
 my $refval = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;referenz&amp;quot;,1024));\&lt;br /&gt;
 my $retval = $hexval*100/$refval;\&lt;br /&gt;
 my $hash  = $defs{%NAME};\&lt;br /&gt;
 my $status = &amp;quot;off&amp;quot;;\&lt;br /&gt;
 my $schwellwert = trim(AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;schwellwert&amp;quot;,30));\&lt;br /&gt;
 \&lt;br /&gt;
 $status = &amp;quot;on&amp;quot; if ($retval &amp;amp;lt; $schwellwert);\&lt;br /&gt;
 \&lt;br /&gt;
 readingsSingleUpdate($hash, &amp;quot;status&amp;quot;, $status, 1);\&lt;br /&gt;
 \&lt;br /&gt;
 $retval;\&lt;br /&gt;
}&lt;br /&gt;
get portvalue cmd {&amp;quot;adc get&amp;amp;#160;%PortID&amp;quot;}&lt;br /&gt;
get portvalue postproc {hex(trim(&amp;quot;$_&amp;quot;))}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss FHEM noch die trim-Funktionbekannt gemacht werden. Siehe [[TRIM-Funktion-Anfangs/EndLeerzeichen aus Strings entfernen]]&lt;br /&gt;
&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.10.11:2701&lt;br /&gt;
attr avrnetio classdefs adc=/etc/fhem.classdef.netio.adc&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend der Bodenfeuchtesensor als ECMDDevice mit übergabe der internen Portnummer, bei mir die Schraubklemme ADC4 -&amp;amp;gt; also der ADC-Port 7:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchte_3 ECMDDevice adc 7&lt;br /&gt;
attr Bodenfeuchte_3 room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt muss ermittelt werden, welcher Wert dem 100% Status entspricht. Im Fall meines Bodenfeuchtesensors bedeutet dies, welcher Wert zurückgegeben wird im Falle einer Überschwemmung. Dazu tauche ich den Sensor komplett in ein Wasserglas und Frage den Status im FHEM-Inputfeld auf der Weboberfläche ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get Bodenfeuchte_3 portvalue&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Bei mir wird 625 zurückgegeben. Also wird als Referenzwert dieses Sensors folgendes eingetragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 referenz 625&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird ab sofort ein annähernd korrekter Prozentwert der aktuellen Bodenfeuchte ausgegeben. Bitte zur Beachtung, das gelöste Salze im Erdreich eine andere Leitfähigkeit besitzen als Trinkwasser. Ebenso kommt es auf die Beschaffenheit des Erdreiches an, ob Sand-, Lehm- oder Tonerde macht schon einen Unterschied. Deshalb kann oder sollten man nach einer gewissen Einsatzzeit den Referenzwert daraufhin anpassen.&lt;br /&gt;
&lt;br /&gt;
Damit wir später aufgrund der prozentualen Bodenfeuchte einen Einschaltbefehl, zb. an ein Gardena Magnetventil, absetzen können muss man wissen, ab wieviel Prozent Bodenfeuchte man bewässern möchte. Das kann von Bewässerungskreis zu Bewässerungskreis unterschiedlich sein. Somit auch abhängig vom jeweiligen Sensor. Rhodedendren möchten schließlich anders bewässert werden als Rasen oder Kartoffeln etc.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein neues Attribut dem Sensor zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Bodenfeuchte_3 schwellwert 30&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird festgelegt, das ab einer Bodenfeuchte von kleiner 30% bewässert werden soll. Abhängig von diesem Schwellwert enthält das Reading &amp;quot;status&amp;quot; entweder &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;. &lt;br /&gt;
Wie dieses Attribut ausgewertet wird obliegt allerdings der Prozedur zum Steuern der Magnetventile (Beispiel: [[Bewässerungssteuerung]])&lt;br /&gt;
&lt;br /&gt;
Jetzt noch einen Timer definieren der die Sensoren minütlich abfragt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Bodenfeuchtemessung at +*00:01 get Bodenfeuchte_3 value&lt;br /&gt;
attr Bodenfeuchtemessung room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und Fertig!!&lt;br /&gt;
&lt;br /&gt;
Hat man nun entsprechende Plots definiert, so sieht das folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Plot_Bodenfeuchtesensor_Vegetronix-VH400.jpg|center|alt=Plot Bodenfeuchtesensor Vegetronix-VH400.jpg]]&lt;br /&gt;
&lt;br /&gt;
Hier ist erkenbar, das nach einem Starkregen (mittlerer Chart, grüne Linie - ca 5 l/m² innerhalb 2h) die Bodenfeuchte auf knapp 100% gestiegen ist, danach gleich wieder abfallend aufgrund Feuchteverteilung. Ein sich anschließender Regenschauer hat die Bodenfeuchte sofort wieder Richtung 100% gebracht. Auch hier ist anschließend der Normalisierungsprozess erkenbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: die rote Linie der Bodenfeuchte ändert sich nicht. Das Areal des Bodenfeuchtefeuchtesensors der Tomaten ist vor Regen geschützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Analoge Ausgänge 0-32V===&lt;br /&gt;
&lt;br /&gt;
Die leicht nachzubauende Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358).&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR_NET_IO_MIT_DAC_LTC1257.png|700px|thumb|left|DAC LTC1257 mit Verstärkerschaltung]]&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&gt;
[[Datei:AVR NET IO MIT DAC LTC1257 Prototyp2.jpg|350px|thumb|right|DAC LTC1257 mit Verstärkerschaltung (Grüne Markierungen sind nicht im Schaltplan enthalten)]]&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch VCC_Therme auf 32V amgeboben werden und der Widerstandswert von R4 auf ca. 150k Ohm 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. Die grünen Markierungen sind nicht im Schaltplan enthalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des leicht erweiterten 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 (erweiterte Schaltung) R6) sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Die PIN-Zuordnungen erfolgt in dem Ethersexprojekt in der Datei pinning/hardware/netio.m4 (nach LTC suchen).&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Soll Wert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;lt;= 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=/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;br /&gt;
&lt;br /&gt;
=== LCD-Modul anschließen ===&lt;br /&gt;
In diesem Beispiel wird ein LCD-Modul mit HD44780 kompatiblen Controller angeschlossen. Diesen Controller nutzen fast alle Module. Dazu gehören auch Module die einen KSxxx Chip verbaut haben. Angeschlossen wird das Modul an die EXT-Pfostensteckerleiste. Somit hat man den großen SUBD25 Anschluss für die Erweiterungplatine weiterhin frei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LCD_4x20.jpg|250px|right|thumb|LCD Modul 4x20 (Bild: Pollin.de)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man das LCD ansprechen kann, muss dieses in der Ethersex Firmware aktiviert werden. Dazu im &amp;quot;make menuconfig&amp;quot; unter &amp;quot;I/O&amp;quot; den Unterpunkt &amp;quot;LCD&amp;quot; aktivieren und gegebenefalls den Controllertyp noch einstellen. Beim Einstellen des Controllertyps muss man ev. etwas ausprobieren, wenn man später auf dem LCD eine verschobene Zeilenausgabe hat.&lt;br /&gt;
&lt;br /&gt;
Verdratet wird das LCD im 4-Bit Modus gemäß u.a. Tabelle. Falls man kein altes 10poliges Flachbandkabel mit Pfostenstecker zur Hand hat, kann man auch ein ausgedientes COM-Port Flachbandkabel benutzen, muss dann allerdings die 5V Vcc über ein extra Kabel von einer der blauen 5V Anschlussleisten holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align: left; float:none&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; LCD-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; EXT-Pin&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Beschreibung&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Masse&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vcc &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; +5V&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GND &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Kontrast gegen GND&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; RS&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; R/W&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PB0 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EN1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; - &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D4&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 12 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D5&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 13 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D6&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PD7 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; D7&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 8 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG+ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung (mit Vorwiderstand 200Ohm)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 16 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HG- &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hintergrundbeleuchtung&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Jetzt wird die classdef Datei erstellt, zb. /etc/fhem.classdef.netio.adc&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Umsetzung der ECMD Befehle&lt;br /&gt;
set write params line col text  &lt;br /&gt;
set write cmd {&amp;quot;lcd goto&amp;amp;#160;%line&amp;amp;#160;%col\nlcd write&amp;amp;#160;%text&amp;quot;}&lt;br /&gt;
set write postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear params col&lt;br /&gt;
set clear cmd {&amp;quot;lcd clear&amp;amp;#160;%col&amp;quot;}&lt;br /&gt;
set clear postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set clear_all cmd {&amp;quot;lcd clear&amp;quot;} &lt;br /&gt;
set clear_all postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&lt;br /&gt;
set lcd_bl params state&lt;br /&gt;
set lcd_bl cmd {&amp;quot;lcd backlight&amp;amp;#160;%state&amp;quot;}&lt;br /&gt;
set lcd_bl postproc {s/([OK|;]*)/success/; &amp;quot;$_&amp;quot; eq &amp;quot;success&amp;quot;&amp;amp;#160;? &amp;quot;ok&amp;quot;&amp;amp;#160;: &amp;quot;error&amp;quot;;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach kann dar NET-IO als ECMD Device in FHEM angelegt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio ECMD telnet 192.168.5.12:2701&lt;br /&gt;
attr avrnetio classdefs lcd=/usr/share/fhem/fhem.classdef.netio.lcd&lt;br /&gt;
attr avrnetio room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anschließend das LCD als ECMDDevice anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define avrnetio_lcd ECMDDevice lcd&lt;br /&gt;
attr avrnetio_lcd room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um jetzt etwas auf dem LCD auszugeben muss man folgendes eingeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set avrnetio_lcd clear_all&lt;br /&gt;
set avrnetio_lcd write 0 0 Hallo_Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird als in Zeile 0, Spalte 0 der Text &amp;quot;Hallo_Welt&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man vorher einen Temperatursensor (wie schon beschrieben) angelegt, so kann man mit einem notify immer bei einer Temperaturmessung den Wert automatisch aufs LCD ausgeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Temp2LCD notify WZ_Temp:temp.* {\&lt;br /&gt;
 my $value = &amp;quot;%EVTPART1&amp;quot;;; \&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd clear_all&amp;quot;;;\&lt;br /&gt;
 fhem &amp;quot;set avrnetio_lcd write 0 0 Temperatur:$value&amp;quot;;;\&lt;br /&gt;
undef\&lt;br /&gt;
}&lt;br /&gt;
attr Temp2LCD room AVR-Net-IO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzwerkausfallsicherheit ===&lt;br /&gt;
Entgegen den Vorgaben von Microchip sind keine Abblockkondensatoren an den Versorgungsspannungsanschlüssen des ENC28J60. Es kann insbesondere bei hoher Netzlast dazu kommen, dass sich der Ethernet Controller aufhängt. Es ist daher empfehlenswert, Kondensatoren am ENC28J60 und am 3,3V Spannungsregler nachzurüsten.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MichaS]] 23:30, 27. Mär. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 1 ===&lt;br /&gt;
Der AVR-NET-IO braucht in der Standardausfürung je nach Eingangsspannung relativ viel Strom (bei 12V Gleichstrom ca. 180 mA). Ein Großteil der Leistung wird an den Festspannungsreglern verheizt.&lt;br /&gt;
Abhilfe schaffen ein pinkompatibler DC/DC-Wandler für den 7805 und ggf. ein entsprechender Ersatz des LM317 oder gleich ein Umstellen des gesamten Boards auf 3,3 Volt. Bei letzterem muss man den Systemtakt des AVR aber reduzieren (ein guter Wert sind 8 MHz), da der AVR sonst außer Spezifikation läuft. Bei Änderungen des Systemtaktes und Nutzung des 1-Wire Bus bitte Fuse-Einstellungen entsprechend anpassen (s. &amp;quot;Hinweise für 1-Wire&amp;quot; weiter unten).&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Reduktion Stromverbrauch Tipp 2 ===&lt;br /&gt;
Um mit einfachen Mitteln den Stromverbrauch des NET-IO zu reduzieren, und somit auch die Wärmeentwicklung, muss man einfach nur ein SchaltNetzteil mit 5V DC einbauen (GND an Pin2 und +5V an Pin3 vom 7805).&lt;br /&gt;
Zb. dieses: [http://www.reichelt.de/Universalnetzteile/MW-3N06GS/3//index.html?ACTION=3&amp;amp;amp;GROUPID=4945&amp;amp;amp;ARTICLE=87338&amp;amp;amp;SHOW=1&amp;amp;amp;START=0&amp;amp;amp;OFFSET=500&amp;amp;amp; EcoFriendly Stecker-Schaltnetzteil MW 3N06GS, 600mA + USB ]&lt;br /&gt;
&lt;br /&gt;
Dazu muss man noch nichtmal große Löterfahrung mitbringen. Eine Leistungsmessung hat folgendes gezeigt: Vorher wurde bei 9V~ ca. 4,5 - 4,8 W verbraucht. Mit der Änderung wird jetzt nur noch 0,3 - 0,4 W benötigt.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:00, 14. Jun. 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise für 1-Wire ===&lt;br /&gt;
Bei Nutzung von 1-Wire ist zu beachten, dass die Einstellungen des Systemtaktes in der Ethersex-Konfiguration und die Fuse-Einstellungen des jeweiligen µC (z.B. AT664p) miteinander harmonieren. Bei falschen Werten funktioniert der 1-Wire-Bus (da das Timing vom Takt gebildet wird) nicht! Ggf. also Fusebits für den Takt neu berechnen und Fuses neu setzen.&lt;br /&gt;
&lt;br /&gt;
[http://www.gtkdb.de/index_18_1039.html AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P] und &lt;br /&gt;
[http://www.mikrocontroller.net/topic/221867#2252416 Ethersex erkennt keine One-Wire Sensoren mit 644p]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Tobias.faust]] 14:15, 18. Jun. 2012 (CEST)&lt;br /&gt;
angepasst: -- &amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 16:02, 14. Nov. 2012 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Kpwg</name></author>
	</entry>
</feed>