<?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=Tino.Glatzel</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=Tino.Glatzel"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Tino.Glatzel"/>
	<updated>2026-04-23T00:59:44Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zyklische_%C3%9Cberpr%C3%BCfung_von_Ger%C3%A4ten_mit_Benachrichtigung_per_Email&amp;diff=8475</id>
		<title>Zyklische Überprüfung von Geräten mit Benachrichtigung per Email</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zyklische_%C3%9Cberpr%C3%BCfung_von_Ger%C3%A4ten_mit_Benachrichtigung_per_Email&amp;diff=8475"/>
		<updated>2014-11-12T18:46:35Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Hiermit können Geräte zyklisch überprüft werden und es erfolgt eine Benachrichtigung per Email.&lt;br /&gt;
&lt;br /&gt;
Folgendes Parameter können über das Webfrontend eingegeben werden:&lt;br /&gt;
&lt;br /&gt;
* Suchstring und Parameter der Geräte&lt;br /&gt;
* IP-Adresse der Mailserver&lt;br /&gt;
* Sender-Emailadresse&lt;br /&gt;
* Empfanger-Emailadresse&lt;br /&gt;
* Tag der Prüfung bzw. tägliche Prüfung&lt;br /&gt;
* Uhrzeit der Prüfung&lt;br /&gt;
* Art der Benachrichtigung (Info oder Error)&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Global.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Global.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define checkDevice_time dummy&lt;br /&gt;
attr checkDevice_time room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_time setList state:time&lt;br /&gt;
attr checkDevice_time webCmd state&lt;br /&gt;
&lt;br /&gt;
define checkDevice_notify notify checkDevice_time {fhem(&amp;quot;modify checkDevice_at *%&amp;quot;);;}&lt;br /&gt;
attr checkDevice_notify room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_at at *09:00 {\&lt;br /&gt;
 if ( ($wday eq Value(&amp;quot;checkDevice_day&amp;quot;)) || (Value(&amp;quot;checkDevice_day&amp;quot;) eq &amp;quot;*&amp;quot;) ) {\&lt;br /&gt;
  checkDevice(Value(&amp;quot;checkDevice_device_parameter&amp;quot;),Value(&amp;quot;checkDevice_mailserver&amp;quot;),Value(&amp;quot;checkDevice_sender&amp;quot;),Value(&amp;quot;checkDevice_recipient&amp;quot;),Value(&amp;quot;checkDevice_mailsend&amp;quot;));;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr checkDevice_at room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_day dummy&lt;br /&gt;
attr checkDevice_day eventMap So:0 Mo:1 Di:2 Mi:3 Do:4 Fr:5 Sa:6&lt;br /&gt;
attr checkDevice_day room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_day setList state:So,Mo,Di,Mi,Do,Fr,Sa,*&lt;br /&gt;
attr checkDevice_day webCmd state&lt;br /&gt;
&lt;br /&gt;
define checkDevice_device_parameter dummy&lt;br /&gt;
attr checkDevice_device_parameter room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_mailserver dummy&lt;br /&gt;
attr checkDevice_mailserver room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_recipient dummy&lt;br /&gt;
attr checkDevice_recipient room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_sender dummy&lt;br /&gt;
attr checkDevice_sender room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_mailsend dummy&lt;br /&gt;
attr checkDevice_mailsend room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_mailsend setList state:Info,Error&lt;br /&gt;
attr checkDevice_mailsend webCmd state&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use Net::SMTP;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Überprüfung der Geräte&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Suchstring für die Geräte und der Parameter		(z.B. .*_Relais,PIO.ALL,.*_Temperatursensor,temperature)&lt;br /&gt;
#   2. Mailserver						(z.B. 127.0.0.1)&lt;br /&gt;
#   3. Sender Emailadresse             				(z.B. fhem@fhem.de)&lt;br /&gt;
#   4. Empfänger Emailadressen					(z.B. recipient@fhem.de,recipient1@fhem.de)&lt;br /&gt;
#   5. Mailbenachrichtigung bei					(Info,Error)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: checkDevice(&amp;quot;.*_Relais,PIO.ALL,.*_Temperatursensor,temperature&amp;quot;,&amp;quot;127.0.0.1&amp;quot;,&amp;quot;fhem@fhem.de&amp;quot;,&amp;quot;recipient@fhem.de&amp;quot;,&amp;quot;Info&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
checkDevice($$$$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	my($deviceParameter,$mailserver,$mailsender,$mailrecipient,$checkDevice_mailsend) = @_;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if ( $deviceParameter eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_device_parameter ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailserver eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_mailserver ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailsender eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_sender ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailrecipient eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_recipient ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $checkDevice_mailsend eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_mailsend ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	my @deviceParameterArray = split(/,/,$deviceParameter);&lt;br /&gt;
&lt;br /&gt;
        if ( (scalar(@deviceParameterArray) % 2) ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_device_parameter enthält eine unglültige Anzahl von Parametern&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);&lt;br /&gt;
&lt;br /&gt;
	$Monat += 1;&lt;br /&gt;
	$Jahr += 1900;&lt;br /&gt;
&lt;br /&gt;
	$Sekunden = sprintf(&amp;quot;%02d&amp;quot;, $Sekunden);&lt;br /&gt;
	$Minuten = sprintf(&amp;quot;%02d&amp;quot;, $Minuten);&lt;br /&gt;
	$Stunden = sprintf(&amp;quot;%02d&amp;quot;, $Stunden);&lt;br /&gt;
	$Monatstag = sprintf(&amp;quot;%02d&amp;quot;, $Monatstag);&lt;br /&gt;
	$Monat = sprintf(&amp;quot;%02d&amp;quot;, $Monat);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	$mailrecipient =~ tr/;/,/;&lt;br /&gt;
&lt;br /&gt;
	my @mailrecipientArray = split(/,/,$mailrecipient);&lt;br /&gt;
	my $device;&lt;br /&gt;
	my $deviceCounter;&lt;br /&gt;
	my $deviceValue;&lt;br /&gt;
	my $error=0;&lt;br /&gt;
	my $deviceString;&lt;br /&gt;
	my $deviceListe;&lt;br /&gt;
	my @deviceArray;&lt;br /&gt;
&lt;br /&gt;
	my $mailsubject_info = &amp;quot;Info zum DeviceCheck am $Monatstag\.$Monat\.$Jahr um $Stunden:$Minuten:$Sekunden&amp;quot;;&lt;br /&gt;
	my $mailsubject_error = &amp;quot;Fehler beim DeviceCheck am $Monatstag\.$Monat\.$Jahr um $Stunden:$Minuten:$Sekunden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	my $mailData = &amp;quot;Start der Prüfung: $Stunden:$Minuten:$Sekunden $Monatstag\.$Monat\.$Jahr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	for ($deviceCounter=0;$deviceCounter&amp;lt;=$#deviceParameterArray;$deviceCounter+=2) {&lt;br /&gt;
&lt;br /&gt;
		$deviceString = $deviceParameterArray[$deviceCounter];&lt;br /&gt;
		$deviceParameter = $deviceParameterArray[($deviceCounter)+1];&lt;br /&gt;
&lt;br /&gt;
		$mailData = $mailData.&amp;quot;\n\nSuchstring fuer die Geräte: &amp;quot;.$deviceString.&amp;quot;\n&amp;quot;; &lt;br /&gt;
		$mailData = $mailData.&amp;quot;Parameter der Geräte: &amp;quot;.$deviceParameter.&amp;quot;\n\n&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
		$deviceListe = fhem(&amp;quot;list $deviceString NAME&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		$deviceListe =~ tr/\n/,/;&lt;br /&gt;
&lt;br /&gt;
		@deviceArray = split(/,/,$deviceListe);&lt;br /&gt;
&lt;br /&gt;
		foreach $device (@deviceArray) {&lt;br /&gt;
&lt;br /&gt;
			$device =~ s/^(.*) (.*)$/$1/;&lt;br /&gt;
&lt;br /&gt;
			$deviceValue = fhem(&amp;quot;get $device $deviceParameter&amp;quot;);&lt;br /&gt;
        	&lt;br /&gt;
			if ( $deviceValue eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
				$error++;&lt;br /&gt;
				$deviceValue = &amp;quot;Error&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			if ( $deviceValue eq &amp;quot;&amp;quot; ) {&lt;br /&gt;
				$error++;&lt;br /&gt;
				$deviceValue = &amp;quot;Error&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$mailData = &amp;quot;$mailData$device\t\t$deviceValue\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($checkDevice_mailsend eq &amp;quot;Info&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
		my $smtp = Net::SMTP-&amp;gt;new($mailserver);&lt;br /&gt;
		$smtp-&amp;gt;mail($mailsender);&lt;br /&gt;
		$smtp-&amp;gt;to(@mailrecipientArray);&lt;br /&gt;
		$smtp-&amp;gt;data();&lt;br /&gt;
                        &lt;br /&gt;
		if ( $error &amp;gt; 0 )&lt;br /&gt;
		{&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_error \n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_info \n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;from: $mailsender\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;To: $mailrecipient\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;$mailData&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;dataend();&lt;br /&gt;
&lt;br /&gt;
		$smtp-&amp;gt;quit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ($checkDevice_mailsend eq &amp;quot;Error&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
		if ( $error &amp;gt; 0 ){&lt;br /&gt;
&lt;br /&gt;
			my $smtp = Net::SMTP-&amp;gt;new($mailserver);&lt;br /&gt;
			$smtp-&amp;gt;mail($mailsender);&lt;br /&gt;
			$smtp-&amp;gt;to(@mailrecipientArray);&lt;br /&gt;
			$smtp-&amp;gt;data();&lt;br /&gt;
                        &lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_error \n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;from: $mailsender\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;To: $mailrecipient\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;$mailData&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;dataend();&lt;br /&gt;
&lt;br /&gt;
			$smtp-&amp;gt;quit;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zyklische_%C3%9Cberpr%C3%BCfung_von_Ger%C3%A4ten_mit_Benachrichtigung_per_Email&amp;diff=8456</id>
		<title>Zyklische Überprüfung von Geräten mit Benachrichtigung per Email</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zyklische_%C3%9Cberpr%C3%BCfung_von_Ger%C3%A4ten_mit_Benachrichtigung_per_Email&amp;diff=8456"/>
		<updated>2014-11-10T20:09:10Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: Die Seite wurde neu angelegt: „ Hiermit können Geräte zyklisch überprüft werden und es erfolgt eine Benachrichtigung per Email.  Folgendes Parameter können über das Webfrontend eingege…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Hiermit können Geräte zyklisch überprüft werden und es erfolgt eine Benachrichtigung per Email.&lt;br /&gt;
&lt;br /&gt;
Folgendes Parameter können über das Webfrontend eingegeben werden:&lt;br /&gt;
&lt;br /&gt;
* Suchstring und Parameter der Geräte&lt;br /&gt;
* IP-Adresse der Mailserver&lt;br /&gt;
* Sender-Emailadresse&lt;br /&gt;
* Empfanger-Emailadresse&lt;br /&gt;
* Tag der Prüfung bzw. tägliche Prüfung&lt;br /&gt;
* Uhrzeit der Prüfung&lt;br /&gt;
* Art der Benachrichtigung (Info oder Error)&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Global.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Global.cfg ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define checkDevice_time dummy&lt;br /&gt;
attr checkDevice_time room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_time setList state:time&lt;br /&gt;
attr checkDevice_time webCmd state&lt;br /&gt;
&lt;br /&gt;
define checkDevice_notify notify checkDevice_time {fhem(&amp;quot;modify checkDevice_at *%&amp;quot;);;}&lt;br /&gt;
attr checkDevice_notify room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_at at *09:00 {\&lt;br /&gt;
 if ( ($wday eq Value(&amp;quot;checkDevice_day&amp;quot;)) || (Value(&amp;quot;checkDevice_day&amp;quot;) eq &amp;quot;*&amp;quot;) ) {\&lt;br /&gt;
  checkDevice(Value(&amp;quot;checkDevice_device_parameter&amp;quot;),Value(&amp;quot;checkDevice_mailserver&amp;quot;),Value(&amp;quot;checkDevice_sender&amp;quot;),Value(&amp;quot;checkDevice_recipient&amp;quot;),Value(&amp;quot;checkDevice_mailsend&amp;quot;));;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr checkDevice_at room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_day dummy&lt;br /&gt;
attr checkDevice_day eventMap So:0 Mo:1 Di:2 Mi:3 Do:4 Fr:5 Sa:6&lt;br /&gt;
attr checkDevice_day room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_day setList state:So,Mo,Di,Mi,Do,Fr,Sa,*&lt;br /&gt;
attr checkDevice_day webCmd state&lt;br /&gt;
&lt;br /&gt;
define checkDevice_device_parameter dummy&lt;br /&gt;
attr checkDevice_device_parameter room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_mailserver dummy&lt;br /&gt;
attr checkDevice_mailserver room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_recipient dummy&lt;br /&gt;
attr checkDevice_recipient room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_sender dummy&lt;br /&gt;
attr checkDevice_sender room Globale_Einstellungen&lt;br /&gt;
&lt;br /&gt;
define checkDevice_mailsend dummy&lt;br /&gt;
attr checkDevice_mailsend room Globale_Einstellungen&lt;br /&gt;
attr checkDevice_mailsend setList state:Info,Error&lt;br /&gt;
attr checkDevice_mailsend webCmd state&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use Net::SMTP;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Überprüfung der Geräte&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Suchstring für die Geräte und der Parameter		(z.B. .*_Relais,PIO.ALL,.*_Temperatursensor,temperature)&lt;br /&gt;
#   2. Mailserver						(z.B. 127.0.0.1)&lt;br /&gt;
#   3. Sender Emailadresse             				(z.B. fhem@fhem.de)&lt;br /&gt;
#   4. Empfänger Emailadressen					(z.B. recipient@fhem.de,recipient1@fhem.de)&lt;br /&gt;
#   5. Mailbenachrichtigung bei					(Info,Error)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: checkDevice(&amp;quot;.*_Relais,PIO.ALL,.*_Temperatursensor,temperature&amp;quot;,&amp;quot;127.0.0.1&amp;quot;,&amp;quot;fhem@fhem.de&amp;quot;,&amp;quot;recipient@fhem.de&amp;quot;,&amp;quot;Info&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
checkDevice($$$$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	my($deviceParameter,$mailserver,$mailsender,$mailrecipient,$checkDevice_mailsend) = @_;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if ( $deviceParameter eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_device_parameter ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailserver eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_mailserver ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailsender eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_sender ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $mailrecipient eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_recipient ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $checkDevice_mailsend eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_mailsend ist nicht initialisiert&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	my @deviceParameterArray = split(/,/,$deviceParameter);&lt;br /&gt;
&lt;br /&gt;
        if ( (scalar(@deviceParameterArray) % 2) ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: checkDevice_device_parameter enthält eine unglültige Anzahl von Parametern&amp;quot;;&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);&lt;br /&gt;
&lt;br /&gt;
	$mailrecipient =~ tr/;/,/;&lt;br /&gt;
&lt;br /&gt;
	my @mailrecipientArray = split(/,/,$mailrecipient);&lt;br /&gt;
	my $device;&lt;br /&gt;
	my $deviceCounter;&lt;br /&gt;
	my $deviceValue;&lt;br /&gt;
	my $error=0;&lt;br /&gt;
	my $deviceString;&lt;br /&gt;
	my $deviceListe;&lt;br /&gt;
	my @deviceArray;&lt;br /&gt;
&lt;br /&gt;
	my $mailsubject_info = &amp;quot;Info zum DeviceCheck am $Monatstag\.$Monat\.$Jahr um $Stunden:$Minuten:$Sekunden&amp;quot;;&lt;br /&gt;
	my $mailsubject_error = &amp;quot;Fehler beim DeviceCheck am $Monatstag\.$Monat\.$Jahr um $Stunden:$Minuten:$Sekunden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	my $mailData = &amp;quot;Start der Prüfung: $Stunden:$Minuten:$Sekunden $Monatstag\.$Monat\.$Jahr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	for ($deviceCounter=0;$deviceCounter&amp;lt;=$#deviceParameterArray;$deviceCounter+=2) {&lt;br /&gt;
&lt;br /&gt;
		$deviceString = $deviceParameterArray[$deviceCounter];&lt;br /&gt;
		$deviceParameter = $deviceParameterArray[($deviceCounter)+1];&lt;br /&gt;
&lt;br /&gt;
		$mailData = $mailData.&amp;quot;\n\nSuchstring fuer die Geräte: &amp;quot;.$deviceString.&amp;quot;\n&amp;quot;; &lt;br /&gt;
		$mailData = $mailData.&amp;quot;Parameter der Geräte: &amp;quot;.$deviceParameter.&amp;quot;\n\n&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
		$deviceListe = fhem(&amp;quot;list $deviceString NAME&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		$deviceListe =~ tr/\n/,/;&lt;br /&gt;
&lt;br /&gt;
		@deviceArray = split(/,/,$deviceListe);&lt;br /&gt;
&lt;br /&gt;
		foreach $device (@deviceArray) {&lt;br /&gt;
&lt;br /&gt;
			$device =~ s/^(.*) (.*)$/$1/;&lt;br /&gt;
&lt;br /&gt;
			$deviceValue = fhem(&amp;quot;get $device $deviceParameter&amp;quot;);&lt;br /&gt;
        	&lt;br /&gt;
			if ( $deviceValue eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
				$error++;&lt;br /&gt;
				$deviceValue = &amp;quot;Error&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			if ( $deviceValue eq &amp;quot;&amp;quot; ) {&lt;br /&gt;
				$error++;&lt;br /&gt;
				$deviceValue = &amp;quot;Error&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$mailData = &amp;quot;$mailData$device\t\t$deviceValue\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($checkDevice_mailsend eq &amp;quot;Info&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
		my $smtp = Net::SMTP-&amp;gt;new($mailserver);&lt;br /&gt;
		$smtp-&amp;gt;mail($mailsender);&lt;br /&gt;
		$smtp-&amp;gt;to(@mailrecipientArray);&lt;br /&gt;
		$smtp-&amp;gt;data();&lt;br /&gt;
                        &lt;br /&gt;
		if ( $error &amp;gt; 0 )&lt;br /&gt;
		{&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_error \n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_info \n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;from: $mailsender\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;To: $mailrecipient\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;datasend(&amp;quot;$mailData&amp;quot;);&lt;br /&gt;
		$smtp-&amp;gt;dataend();&lt;br /&gt;
&lt;br /&gt;
		$smtp-&amp;gt;quit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ($checkDevice_mailsend eq &amp;quot;Error&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
		if ( $error &amp;gt; 0 ){&lt;br /&gt;
&lt;br /&gt;
			my $smtp = Net::SMTP-&amp;gt;new($mailserver);&lt;br /&gt;
			$smtp-&amp;gt;mail($mailsender);&lt;br /&gt;
			$smtp-&amp;gt;to(@mailrecipientArray);&lt;br /&gt;
			$smtp-&amp;gt;data();&lt;br /&gt;
                        &lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;subject: $mailsubject_error \n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;from: $mailsender\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;To: $mailrecipient\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;datasend(&amp;quot;$mailData&amp;quot;);&lt;br /&gt;
			$smtp-&amp;gt;dataend();&lt;br /&gt;
&lt;br /&gt;
			$smtp-&amp;gt;quit;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7919</id>
		<title>Heizungssteuerung 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7919"/>
		<updated>2014-09-14T19:41:14Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In diesem Szenario arbeitet die Raumtemperatursteuerung als Erweiterung zu den in den Räumen installierten Raumtemperaturregler. In den Heizungsverteiler sind Relaismodule eingebaut, über die die Steuerleitung vom Raumtemperaturregler zum Stellantrieb des Heizkreises über den Öffnerkontakt des Relais geführt ist. Ist die Raumtemperatur erreicht, wird das Relais aktiviert und die Zuleitung zum Stellantrieb wird unterbrochen. Es gab zwei Gründe die Temperatursteuerung auf diese Weise zu realisieren. Zum einen sind die Raumtemperaturregler sowieso immer auf den Maximalwert eingestellt und zum andern werden die Räume auch bei einem Defekt des Relaismodul warm. Fällt die Stromversorgung des Relais aus, ist der Öffnerkontakt geschlossen. Somit ist im schlimmsten Fall die Raumtempertur zu hoch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Das System ist aus den folgenden Komponenten aufgebaut:&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi Hutschienen-Set (http://www.pollin.de)&lt;br /&gt;
* 1-Wire Buskoppler USB, galvanisch Isoliert (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Hub II AC V2 (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Dual Schaltmodul 230V 5A (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire DS18B20 1-Wire Temp-Sensor (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire timed4channel Module (gibts leider nicht mehr zum Kauf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raumtemperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
Die Raumtemperatursensoren habe ich mit einem RJ45-Stecker und einem 1-Wire DS18B20 1-Wire Temp-Sensor realisiert. Hierzu habe ich den 1-Wire DS18B20 1-Wire Temp-Sensor in den RJ45-Stecker eingeführt und mit der Zange verpresst. Somit kann jede RJ45-Dose für einen Temperatursensor verwendet werden. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.jpg | x200px]]&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.jpg | x200px]]&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen ist in der zentrale Konfigurationsdatei nur der Zugriff auf den OWFS-Daemon und für jede Wohnung ein Include definiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr global userattr devStateIcon devStateStyle fp_Wohnung_EG icon sortby webCmd widgetOverride&lt;br /&gt;
&lt;br /&gt;
define TCM120_0 TCM 120 /dev/ttyUSB0@9600&lt;br /&gt;
define TCM120_1 TCM 120 /dev/ttyUSB1@9600&lt;br /&gt;
define myOWServer OWServer localhost:4304&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Wohnung-EG.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Wohnung-EG.cfg ==&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensor ===&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor habe ich um ein userReadings mit dem Namen Final erweitert. Somit kann ich, wenn ein Temperatursensor eine Abweichung hat, einen Korrekturwert angeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)-2.4;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup ===&lt;br /&gt;
&lt;br /&gt;
Um eine Temperaturanzeige kombiniert mit einem Symbol im Floorplan zu erzeugen, habe ich eine readingsGroup verwendet. Weiter kann sich die Hintergrundfarbe der readingsGroup abhängig vom Modus des Raumes ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Relais ===&lt;br /&gt;
&lt;br /&gt;
Um die Relais anzusteuern verwende ich einen readingsProxy. Den Status des readingsProxy lasse ich von der setFn setzen. In diesem Fall setzt die Funktion, timed4channel, das Relais und frägt gleich nach dem Setzen das Relais wieder ab. Ist der abgefragte Wert identisch mit dem gesetzten Wert, so ist der Bus funktional. Sind die Werte verschieden, wird der Staus des Relais auf &amp;quot;fail&amp;quot; gesetzt.&lt;br /&gt;
Bei verschiedenen Tests habe ich festgestellt, wenn ich für die Statusabfrage die ValueFn verwendet habe, und der Bus nicht funktional war, wurde der Status nur auf &amp;quot;off&amp;quot; statt auf &amp;quot;fail&amp;quot; gesetzt. Weiter kann das timed4channel-Modul nicht im nachhinein den Status des einzelnen Relais ausgeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verschiedene Temperaturen ===&lt;br /&gt;
&lt;br /&gt;
Für die Räume können zwei Temperaturen vorgegeben werden. Diese werden mit dem Modus-dummy umgeschaltet und auf das Soll-dummy kopiert. Die Syncronisation der Werte erfolgt mit dem notify &amp;quot;Wohnung_EG_Temperatur_Notify&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Farben für den Modus des Raumes ===&lt;br /&gt;
&lt;br /&gt;
Die Farben für die Modi der Raumtemperatur wird pro Wohnung gesetzt. Hierzu sind zwei dummy vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Offset für die Temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Pro Wohnung wird ein Offset für die Temperaturregelung festgelegt. Hiermit können unnötige Schaltvorgänge, verursacht durch Messdifferenzen, vermieden werden. Der Offset wird durch das at &amp;quot;Wohnung_EG_Temperaturregelung&amp;quot; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Betriebmodus für die Wohnung ===&lt;br /&gt;
&lt;br /&gt;
Es wird zwischen den Modi Sommer und Winter unterschieden. Im Normalfall ist im Sommer die Raumtemperatur höher als die vorgegebene Raumtemperatur. Hierdurch sind die Relais angezogen um die Zuleitung zu den Stellantrieben zu unterbrechen. Die Umschaltung auf Sommer bewirkt dass die Relais nicht angezogen sind, der Status jedoch als &amp;quot;off&amp;quot; angezeigt wird. Somit spare ich im Sommer den Strom für die angezogenen Relais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temepraturregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Temepraturregelung wird jede Minute angeworfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vollständige Konfigurationsdatei ===&lt;br /&gt;
&lt;br /&gt;
Im Voraus bin ich nur auf die &amp;quot;Besonderheiten&amp;quot; eingegangen. Hier die komplette Datei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG FLOORPLAN&lt;br /&gt;
attr Wohnung_EG fp_arrange 0&lt;br /&gt;
attr Wohnung_EG fp_backgroundimg fp_Wohnung_EG.png&lt;br /&gt;
attr Wohnung_EG fp_default 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_1 OWDevice 29.35A304000000&lt;br /&gt;
attr Wohnung_EG_Relais_1 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_1 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_1 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_2 OWDevice 29.1D8103000000&lt;br /&gt;
attr Wohnung_EG_Relais_2 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_2 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_2 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperatur_Notify notify Wohnung_EG_.*_Temperatur_.* {temperatursyncronisation($NAME,$EVENT);;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Flur----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor OWDevice 10.8AC3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Flur_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Anzeige readingsGroup Wohnung_EG_Flur_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige fp_Wohnung_EG 238,651,0,&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_Log FileLog ./log/Wohnung_EG_Flur_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Flur_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_SVG SVG Wohnung_EG_Flur_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_SVG room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Schlafen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Schlafen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Schlafen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_SVG SVG Wohnung_EG_Schlafen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_Log FileLog ./log/Wohnung_EG_Schlafen_Heizung_Log-%Y-%m.log Wohnung_EG_Schlafen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_SVG SVG Wohnung_EG_Schlafen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Bad----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll fp_Wohnung_EG 19,539,2,Soll&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor OWDevice 10.C9A3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Bad_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Anzeige readingsGroup Wohnung_EG_Bad_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige fp_Wohnung_EG 95,541,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Bad_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_Log FileLog ./log/Wohnung_EG_Bad_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Bad_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_SVG SVG Wohnung_EG_Bad_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung fp_Wohnung_EG 91,623,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setFn {timed4channel($DEVICE,1,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_Log FileLog ./log/Wohnung_EG_Bad_Heizung_Log-%Y-%m.log Wohnung_EG_Bad_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_SVG SVG Wohnung_EG_Bad_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Buero----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll fp_Wohnung_EG 39,381,2,Soll&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor OWDevice 10.E894FF010800 120&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Buero_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Anzeige readingsGroup Wohnung_EG_Buero_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige fp_Wohnung_EG 109,381,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Buero_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_Log FileLog ./log/Wohnung_EG_Buero_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Buero_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_SVG SVG Wohnung_EG_Buero_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung fp_Wohnung_EG 156,461,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setFn {timed4channel($DEVICE,2,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_Log FileLog ./log/Wohnung_EG_Buero_Heizung_Log-%Y-%m.log Wohnung_EG_Buero_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_SVG SVG Wohnung_EG_Buero_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Wohnen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll fp_Wohnung_EG 355,366,2,Soll&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor OWDevice 10.E0B40B020800 120&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Wohnen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Anzeige readingsGroup Wohnung_EG_Wohnen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige fp_Wohnung_EG 428,368,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Wohnen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Wohnen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Wohnen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_SVG SVG Wohnung_EG_Wohnen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung fp_Wohnung_EG 416,476,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setFn {timed4channel($DEVICE,3,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_Log FileLog ./log/Wohnung_EG_Wohnen_Heizung_Log-%Y-%m.log Wohnung_EG_Wohnen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_SVG SVG Wohnung_EG_Wohnen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Kueche----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll fp_Wohnung_EG 355,590,2,Soll&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor OWDevice 10.F8B8FF010800 120&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Kueche_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Anzeige readingsGroup Wohnung_EG_Kueche_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige fp_Wohnung_EG 428,593,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Kueche_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_Log FileLog ./log/Wohnung_EG_Kueche_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Kueche_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_SVG SVG Wohnung_EG_Kueche_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung readingsProxy Wohnung_EG_Relais_2:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung fp_Wohnung_EG 448,679,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_Log FileLog ./log/Wohnung_EG_Kueche_Heizung_Log-%Y-%m.log Wohnung_EG_Kueche_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_SVG SVG Wohnung_EG_Kueche_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
In der 99_myUtils.pm habe ich meine Skripte eingebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== timed4channel ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion wird das timed4Channel-Modul gesteuert. Vom Entwickler des Moduls habe ich folgende Beschreibung bekommen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Here some important details for your information:&lt;br /&gt;
&lt;br /&gt;
- The communication over the 1-Wire Bus goes via a DS2408 IC&lt;br /&gt;
- The DS2408 needs to be initialized so that all 8 Channels act as &amp;quot;Digital Outputs&amp;quot; and that Pin 10 (RSTZ) is configured as /STRB , an output strobe will occur after a PIO write (see Channel-Access Write command). The power-on default function of this pin is /RST.&lt;br /&gt;
&lt;br /&gt;
- You need to send 8-Bit Control words to the module - like&lt;br /&gt;
&lt;br /&gt;
P0 ... P5 =&amp;gt; [1 - 60] - Values for ON-Time in minutes&lt;br /&gt;
[0] - selected Channel OFF&lt;br /&gt;
[61] - selected Channel ON&lt;br /&gt;
[62] - all Channels OFF - regardless of Channel&lt;br /&gt;
&lt;br /&gt;
P6 and P7 =&amp;gt; [0 - 3] - Value 0 is channel 1, value 1 is channel 2, value 2 is channel 3, value 3 is channel 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples of binary control words:&lt;br /&gt;
&lt;br /&gt;
PPPPPPPP&lt;br /&gt;
76543210&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
01001010; Channel 2 for 10 minutes ON&lt;br /&gt;
&lt;br /&gt;
11100110; Channel 4 for 38 minutes ON&lt;br /&gt;
&lt;br /&gt;
10000000; Channel 3 OFF&lt;br /&gt;
&lt;br /&gt;
00111101; Channel 1 ON&lt;br /&gt;
&lt;br /&gt;
00111110; All Channels OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier der Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Steuerung des timed4channel 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-3)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer) &lt;br /&gt;
#&lt;br /&gt;
# Bsp: timed4channel(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
timed4channel($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!(($relais &amp;gt;= 0) &amp;amp;&amp;amp; ($relais &amp;lt;= 3))) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 61;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my $relaisstring = ( $relais &amp;lt;&amp;lt; 6 ) + $action;&lt;br /&gt;
	$relaisstring = ~$relaisstring;&lt;br /&gt;
	$relaisstring = $relaisstring &amp;amp; 255;&lt;br /&gt;
	$relaisstring = sprintf(&amp;quot;%08b&amp;quot;,$relaisstring);&lt;br /&gt;
	$relaisstring = reverse ($relaisstring);&lt;br /&gt;
&lt;br /&gt;
	$relaisstring =~ s/(.)/$1,/g;&lt;br /&gt;
	$relaisstring =~ s/(,$)//;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 61) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== piorelais ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion können Relais in Relaismodulen gesteuert werden, die für jedes Relais ein File zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ##############################################&lt;br /&gt;
# Prozedur zur Steuerung des 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-7)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: piorelais(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
piorelais($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!($relais =~ /^PIO\.[0-7AB]$/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 1) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion vergleicht den Soll- und Istwert der Raumtemperatur und schaltet ggf. das Relais. Ist die Raumtempertur unter dem Sollwert, wird der Raum auf den Sollwert plus Offset aufgeheizt. Ist diese Temperatur erreicht, wird das Relais, zur Unterbrechung der Zuleitung zum Stellantrieb, aktiviert. Somit wird der Raum nicht mehr beheizt bis der Sollwert unterschritten ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Regelung der Raumtemperatur&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Raumname      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. Offset        (z.B. 0.2)&lt;br /&gt;
#   3. Modus         (z.B. Sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperaturregelung(&amp;quot;Wohnung_OG_Kueche&amp;quot;,0.2,&amp;quot;Sommer&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperaturregelung($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($raum,$offset,$modus) = @_;&lt;br /&gt;
&lt;br /&gt;
	if ( $offset eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Offset ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$modus = lc($modus);&lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;sommer&amp;quot; )&lt;br /&gt;
	{&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
		fhem(&amp;quot;set $heizung sommer&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		my $sollwert = Value($raum.&amp;quot;_Temperatur_Soll&amp;quot;);&lt;br /&gt;
		my $istwert = ReadingsVal($raum.&amp;quot;_Temperatursensor&amp;quot;,&amp;quot;Final&amp;quot;,0);&lt;br /&gt;
		my $status = ReadingsVal($raum.&amp;quot;_Heizung&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		if ( $status eq &amp;quot;off&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert + $offset ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif ( $status eq &amp;quot;on&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;lt; $sollwert )&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== temperatursyncronisation ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion syncronisiert die Temperaturwerte der Dummys  ...Temperatur_Soll, ...Temperatur_Alternativ und ...Temperatur_Standard eines Raumes in Abhängigkeit vom ...Temperatur_Modus des Raumes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Syncronisation der Temperaturanzeigen&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Ausloesendes Device      (z.B. Wohnung_OG_Bad_Temperatur_Alternativ)&lt;br /&gt;
#   2. Event		        (z.B. 23.2)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperatursyncronisation(&amp;quot;Wohnung_OG_Bad_Temperatur_Alternativ&amp;quot;,23.2)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperatursyncronisation($$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 2) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($name,$event) = @_;&lt;br /&gt;
&lt;br /&gt;
	my @nameArray = split(/_/,$name);&lt;br /&gt;
	my $nameArrayLast = $nameArray[$#nameArray];&lt;br /&gt;
&lt;br /&gt;
	SELECT: {&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Soll&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $standarddevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $alternativdevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Modus&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modus = $event;&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $standard = Value($standarddevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $standard&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $alternativ = Value($alternativdevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $alternativ&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setBackgroundColor ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion setzt die Farbe der readingsGroup in Abhängigkeit vom ...Temperatur_Modus des Raumes und der für die Wohnung definierten Farben für die die Modi der Räume.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Rueckgabe der Farbe fuer den Background &lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. StandardfarbeDevice      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. AlternativfarbeDevice    (z.B. 0.2)&lt;br /&gt;
#   3. Modusdevice              (z.B. Wohnung_DG_Bad_Temperatur_Modus)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: setBackgroundColor(&amp;quot;Wohnung_OG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_OG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_DG_Kind_West_Temperatur_Modus&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
setBackgroundColor($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($standardfarbedevice,$alternativfarbedevice,$modusdevice) = @_;&lt;br /&gt;
&lt;br /&gt;
	my $modus = Value($modusdevice); &lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
       		Log 3, &amp;quot;Abbruch: Modus ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	MODUS: {&lt;br /&gt;
&lt;br /&gt;
		if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $standardfarbe = Value($standardfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $standardfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
               			Log 3, &amp;quot;Abbruch: Standardfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$standardfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
		if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $alternativfarbe = Value($alternativfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $alternativfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
	               		Log 3, &amp;quot;Abbruch: Alternativfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$alternativfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7918</id>
		<title>Heizungssteuerung 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7918"/>
		<updated>2014-09-14T19:40:17Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In diesem Szenario arbeitet die Raumtemperatursteuerung als Erweiterung zu den in den Räumen installierten Raumtemperaturregler. In den Heizungsverteiler sind Relaismodule eingebaut, über die die Steuerleitung vom Raumtemperaturregler zum Stellantrieb des Heizkreises über den Öffnerkontakt des Relais geführt ist. Ist die Raumtemperatur erreicht, wird das Relais aktiviert und die Zuleitung zum Stellantrieb wird unterbrochen. Es gab zwei Gründe die Temperatursteuerung auf diese Weise zu realisieren. Zum einen sind die Raumtemperaturregler sowieso immer auf den Maximalwert eingestellt und zum andern werden die Räume auch bei einem Defekt des Relaismodul warm. Fällt die Stromversorgung des Relais aus, ist der Öffnerkontakt geschlossen. Somit ist im schlimmsten Fall die Raumtempertur zu hoch &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Das System ist aus den folgenden Komponenten aufgebaut:&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi Hutschienen-Set (http://www.pollin.de)&lt;br /&gt;
* 1-Wire Buskoppler USB, galvanisch Isoliert (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Hub II AC V2 (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Dual Schaltmodul 230V 5A (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire DS18B20 1-Wire Temp-Sensor (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire timed4channel Module (gibts leider nicht mehr zum Kauf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raumtemperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
Die Raumtemperatursensoren habe ich mit einem RJ45-Stecker und einem 1-Wire DS18B20 1-Wire Temp-Sensor realisiert. Hierzu habe ich den 1-Wire DS18B20 1-Wire Temp-Sensor in den RJ45-Stecker eingeführt und mit der Zange verpresst. Somit kann jede RJ45-Dose für einen Temperatursensor verwendet werden. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.jpg | x200px]]&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.jpg | x200px]]&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen ist in der zentrale Konfigurationsdatei nur der Zugriff auf den OWFS-Daemon und für jede Wohnung ein Include definiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr global userattr devStateIcon devStateStyle fp_Wohnung_EG icon sortby webCmd widgetOverride&lt;br /&gt;
&lt;br /&gt;
define TCM120_0 TCM 120 /dev/ttyUSB0@9600&lt;br /&gt;
define TCM120_1 TCM 120 /dev/ttyUSB1@9600&lt;br /&gt;
define myOWServer OWServer localhost:4304&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Wohnung-EG.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Wohnung-EG.cfg ==&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensor ===&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor habe ich um ein userReadings mit dem Namen Final erweitert. Somit kann ich, wenn ein Temperatursensor eine Abweichung hat, einen Korrekturwert angeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)-2.4;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup ===&lt;br /&gt;
&lt;br /&gt;
Um eine Temperaturanzeige kombiniert mit einem Symbol im Floorplan zu erzeugen, habe ich eine readingsGroup verwendet. Weiter kann sich die Hintergrundfarbe der readingsGroup abhängig vom Modus des Raumes ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Relais ===&lt;br /&gt;
&lt;br /&gt;
Um die Relais anzusteuern verwende ich einen readingsProxy. Den Status des readingsProxy lasse ich von der setFn setzen. In diesem Fall setzt die Funktion, timed4channel, das Relais und frägt gleich nach dem Setzen das Relais wieder ab. Ist der abgefragte Wert identisch mit dem gesetzten Wert, so ist der Bus funktional. Sind die Werte verschieden, wird der Staus des Relais auf &amp;quot;fail&amp;quot; gesetzt.&lt;br /&gt;
Bei verschiedenen Tests habe ich festgestellt, wenn ich für die Statusabfrage die ValueFn verwendet habe, und der Bus nicht funktional war, wurde der Status nur auf &amp;quot;off&amp;quot; statt auf &amp;quot;fail&amp;quot; gesetzt. Weiter kann das timed4channel-Modul nicht im nachhinein den Status des einzelnen Relais ausgeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verschiedene Temperaturen ===&lt;br /&gt;
&lt;br /&gt;
Für die Räume können zwei Temperaturen vorgegeben werden. Diese werden mit dem Modus-dummy umgeschaltet und auf das Soll-dummy kopiert. Die Syncronisation der Werte erfolgt mit dem notify &amp;quot;Wohnung_EG_Temperatur_Notify&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Farben für den Modus des Raumes ===&lt;br /&gt;
&lt;br /&gt;
Die Farben für die Modi der Raumtemperatur wird pro Wohnung gesetzt. Hierzu sind zwei dummy vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Offset für die Temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Pro Wohnung wird ein Offset für die Temperaturregelung festgelegt. Hiermit können unnötige Schaltvorgänge, verursacht durch Messdifferenzen, vermieden werden. Der Offset wird durch das at &amp;quot;Wohnung_EG_Temperaturregelung&amp;quot; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Betriebmodus für die Wohnung ===&lt;br /&gt;
&lt;br /&gt;
Es wird zwischen den Modi Sommer und Winter unterschieden. Im Normalfall ist im Sommer die Raumtemperatur höher als die vorgegebene Raumtemperatur. Hierdurch sind die Relais angezogen um die Zuleitung zu den Stellantrieben zu unterbrechen. Die Umschaltung auf Sommer bewirkt dass die Relais nicht angezogen sind, der Status jedoch als &amp;quot;off&amp;quot; angezeigt wird. Somit spare ich im Sommer den Strom für die angezogenen Relais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temepraturregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Temepraturregelung wird jede Minute angeworfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vollständige Konfigurationsdatei ===&lt;br /&gt;
&lt;br /&gt;
Im Voraus bin ich nur auf die &amp;quot;Besonderheiten&amp;quot; eingegangen. Hier die komplette Datei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG FLOORPLAN&lt;br /&gt;
attr Wohnung_EG fp_arrange 0&lt;br /&gt;
attr Wohnung_EG fp_backgroundimg fp_Wohnung_EG.png&lt;br /&gt;
attr Wohnung_EG fp_default 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_1 OWDevice 29.35A304000000&lt;br /&gt;
attr Wohnung_EG_Relais_1 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_1 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_1 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_2 OWDevice 29.1D8103000000&lt;br /&gt;
attr Wohnung_EG_Relais_2 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_2 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_2 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperatur_Notify notify Wohnung_EG_.*_Temperatur_.* {temperatursyncronisation($NAME,$EVENT);;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Flur----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor OWDevice 10.8AC3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Flur_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Anzeige readingsGroup Wohnung_EG_Flur_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige fp_Wohnung_EG 238,651,0,&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_Log FileLog ./log/Wohnung_EG_Flur_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Flur_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_SVG SVG Wohnung_EG_Flur_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_SVG room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Schlafen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Schlafen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Schlafen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_SVG SVG Wohnung_EG_Schlafen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_Log FileLog ./log/Wohnung_EG_Schlafen_Heizung_Log-%Y-%m.log Wohnung_EG_Schlafen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_SVG SVG Wohnung_EG_Schlafen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Bad----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll fp_Wohnung_EG 19,539,2,Soll&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor OWDevice 10.C9A3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Bad_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Anzeige readingsGroup Wohnung_EG_Bad_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige fp_Wohnung_EG 95,541,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Bad_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_Log FileLog ./log/Wohnung_EG_Bad_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Bad_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_SVG SVG Wohnung_EG_Bad_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung fp_Wohnung_EG 91,623,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setFn {timed4channel($DEVICE,1,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_Log FileLog ./log/Wohnung_EG_Bad_Heizung_Log-%Y-%m.log Wohnung_EG_Bad_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_SVG SVG Wohnung_EG_Bad_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Buero----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll fp_Wohnung_EG 39,381,2,Soll&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor OWDevice 10.E894FF010800 120&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Buero_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Anzeige readingsGroup Wohnung_EG_Buero_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige fp_Wohnung_EG 109,381,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Buero_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_Log FileLog ./log/Wohnung_EG_Buero_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Buero_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_SVG SVG Wohnung_EG_Buero_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung fp_Wohnung_EG 156,461,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setFn {timed4channel($DEVICE,2,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_Log FileLog ./log/Wohnung_EG_Buero_Heizung_Log-%Y-%m.log Wohnung_EG_Buero_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_SVG SVG Wohnung_EG_Buero_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Wohnen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll fp_Wohnung_EG 355,366,2,Soll&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor OWDevice 10.E0B40B020800 120&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Wohnen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Anzeige readingsGroup Wohnung_EG_Wohnen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige fp_Wohnung_EG 428,368,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Wohnen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Wohnen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Wohnen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_SVG SVG Wohnung_EG_Wohnen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung fp_Wohnung_EG 416,476,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setFn {timed4channel($DEVICE,3,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_Log FileLog ./log/Wohnung_EG_Wohnen_Heizung_Log-%Y-%m.log Wohnung_EG_Wohnen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_SVG SVG Wohnung_EG_Wohnen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Kueche----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll fp_Wohnung_EG 355,590,2,Soll&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor OWDevice 10.F8B8FF010800 120&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Kueche_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Anzeige readingsGroup Wohnung_EG_Kueche_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige fp_Wohnung_EG 428,593,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Kueche_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_Log FileLog ./log/Wohnung_EG_Kueche_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Kueche_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_SVG SVG Wohnung_EG_Kueche_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung readingsProxy Wohnung_EG_Relais_2:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung fp_Wohnung_EG 448,679,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_Log FileLog ./log/Wohnung_EG_Kueche_Heizung_Log-%Y-%m.log Wohnung_EG_Kueche_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_SVG SVG Wohnung_EG_Kueche_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
In der 99_myUtils.pm habe ich meine Skripte eingebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== timed4channel ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion wird das timed4Channel-Modul gesteuert. Vom Entwickler des Moduls habe ich folgende Beschreibung bekommen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Here some important details for your information:&lt;br /&gt;
&lt;br /&gt;
- The communication over the 1-Wire Bus goes via a DS2408 IC&lt;br /&gt;
- The DS2408 needs to be initialized so that all 8 Channels act as &amp;quot;Digital Outputs&amp;quot; and that Pin 10 (RSTZ) is configured as /STRB , an output strobe will occur after a PIO write (see Channel-Access Write command). The power-on default function of this pin is /RST.&lt;br /&gt;
&lt;br /&gt;
- You need to send 8-Bit Control words to the module - like&lt;br /&gt;
&lt;br /&gt;
P0 ... P5 =&amp;gt; [1 - 60] - Values for ON-Time in minutes&lt;br /&gt;
[0] - selected Channel OFF&lt;br /&gt;
[61] - selected Channel ON&lt;br /&gt;
[62] - all Channels OFF - regardless of Channel&lt;br /&gt;
&lt;br /&gt;
P6 and P7 =&amp;gt; [0 - 3] - Value 0 is channel 1, value 1 is channel 2, value 2 is channel 3, value 3 is channel 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples of binary control words:&lt;br /&gt;
&lt;br /&gt;
PPPPPPPP&lt;br /&gt;
76543210&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
01001010; Channel 2 for 10 minutes ON&lt;br /&gt;
&lt;br /&gt;
11100110; Channel 4 for 38 minutes ON&lt;br /&gt;
&lt;br /&gt;
10000000; Channel 3 OFF&lt;br /&gt;
&lt;br /&gt;
00111101; Channel 1 ON&lt;br /&gt;
&lt;br /&gt;
00111110; All Channels OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier der Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Steuerung des timed4channel 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-3)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer) &lt;br /&gt;
#&lt;br /&gt;
# Bsp: timed4channel(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
timed4channel($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!(($relais &amp;gt;= 0) &amp;amp;&amp;amp; ($relais &amp;lt;= 3))) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 61;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my $relaisstring = ( $relais &amp;lt;&amp;lt; 6 ) + $action;&lt;br /&gt;
	$relaisstring = ~$relaisstring;&lt;br /&gt;
	$relaisstring = $relaisstring &amp;amp; 255;&lt;br /&gt;
	$relaisstring = sprintf(&amp;quot;%08b&amp;quot;,$relaisstring);&lt;br /&gt;
	$relaisstring = reverse ($relaisstring);&lt;br /&gt;
&lt;br /&gt;
	$relaisstring =~ s/(.)/$1,/g;&lt;br /&gt;
	$relaisstring =~ s/(,$)//;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 61) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== piorelais ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion können Relais in Relaismodulen gesteuert werden, die für jedes Relais ein File zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ##############################################&lt;br /&gt;
# Prozedur zur Steuerung des 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-7)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: piorelais(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
piorelais($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!($relais =~ /^PIO\.[0-7AB]$/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 1) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion vergleicht den Soll- und Istwert der Raumtemperatur und schaltet ggf. das Relais. Ist die Raumtempertur unter dem Sollwert, wird der Raum auf den Sollwert plus Offset aufgeheizt. Ist diese Temperatur erreicht, wird das Relais, zur Unterbrechung der Zuleitung zum Stellantrieb, aktiviert. Somit wird der Raum nicht mehr beheizt bis der Sollwert unterschritten ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Regelung der Raumtemperatur&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Raumname      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. Offset        (z.B. 0.2)&lt;br /&gt;
#   3. Modus         (z.B. Sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperaturregelung(&amp;quot;Wohnung_OG_Kueche&amp;quot;,0.2,&amp;quot;Sommer&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperaturregelung($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($raum,$offset,$modus) = @_;&lt;br /&gt;
&lt;br /&gt;
	if ( $offset eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Offset ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$modus = lc($modus);&lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;sommer&amp;quot; )&lt;br /&gt;
	{&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
		fhem(&amp;quot;set $heizung sommer&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		my $sollwert = Value($raum.&amp;quot;_Temperatur_Soll&amp;quot;);&lt;br /&gt;
		my $istwert = ReadingsVal($raum.&amp;quot;_Temperatursensor&amp;quot;,&amp;quot;Final&amp;quot;,0);&lt;br /&gt;
		my $status = ReadingsVal($raum.&amp;quot;_Heizung&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		if ( $status eq &amp;quot;off&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert + $offset ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif ( $status eq &amp;quot;on&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;lt; $sollwert )&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== temperatursyncronisation ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion syncronisiert die Temperaturwerte der Dummys  ...Temperatur_Soll, ...Temperatur_Alternativ und ...Temperatur_Standard eines Raumes in Abhängigkeit vom ...Temperatur_Modus des Raumes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Syncronisation der Temperaturanzeigen&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Ausloesendes Device      (z.B. Wohnung_OG_Bad_Temperatur_Alternativ)&lt;br /&gt;
#   2. Event		        (z.B. 23.2)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperatursyncronisation(&amp;quot;Wohnung_OG_Bad_Temperatur_Alternativ&amp;quot;,23.2)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperatursyncronisation($$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 2) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($name,$event) = @_;&lt;br /&gt;
&lt;br /&gt;
	my @nameArray = split(/_/,$name);&lt;br /&gt;
	my $nameArrayLast = $nameArray[$#nameArray];&lt;br /&gt;
&lt;br /&gt;
	SELECT: {&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Soll&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $standarddevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $alternativdevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Modus&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modus = $event;&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $standard = Value($standarddevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $standard&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $alternativ = Value($alternativdevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $alternativ&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setBackgroundColor ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion setzt die Farbe der readingsGroup in Abhängigkeit vom ...Temperatur_Modus des Raumes und der für die Wohnung definierten Farben für die die Modi der Räume.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Rueckgabe der Farbe fuer den Background &lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. StandardfarbeDevice      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. AlternativfarbeDevice    (z.B. 0.2)&lt;br /&gt;
#   3. Modusdevice              (z.B. Wohnung_DG_Bad_Temperatur_Modus)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: setBackgroundColor(&amp;quot;Wohnung_OG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_OG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_DG_Kind_West_Temperatur_Modus&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
setBackgroundColor($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($standardfarbedevice,$alternativfarbedevice,$modusdevice) = @_;&lt;br /&gt;
&lt;br /&gt;
	my $modus = Value($modusdevice); &lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
       		Log 3, &amp;quot;Abbruch: Modus ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	MODUS: {&lt;br /&gt;
&lt;br /&gt;
		if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $standardfarbe = Value($standardfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $standardfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
               			Log 3, &amp;quot;Abbruch: Standardfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$standardfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
		if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $alternativfarbe = Value($alternativfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $alternativfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
	               		Log 3, &amp;quot;Abbruch: Alternativfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$alternativfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7917</id>
		<title>Heizungssteuerung 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7917"/>
		<updated>2014-09-14T19:32:53Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In diesem Szenario arbeitet die Raumtemperatursteuerung als Erweiterung zu den in den Räumen installierten Raumtemperaturregler. In den Heizungsverteiler sind Relaismodule eingebaut, über die die Steuerleitung vom Raumtemperaturregler zum Stellantrieb des Heizkreises über den Öffnerkontakt des Relais geführt ist. Ist die Raumtemperatur erreicht, wird das Relais aktiviert und die Zuleitung zum Stellantrieb wird unterbrochen. Es gab zwei Gründe die Temperatursteuerung auf diese Weise zu realisieren. Zum einen sind die Raumtemperaturregler sowieso immer auf den Maximalwert eingestellt und zum andern werden die Räume auch bei einem Defekt des Relaismodul warm. Fällt die Stromversorgung des Relais aus, ist der Öffnerkontakt geschlossen. Somit ist im schlimmsten Fall die Raumtempertur zu hoch &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Das System ist aus den folgenden Komponenten aufgebaut:&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi Hutschienen-Set (http://www.pollin.de)&lt;br /&gt;
* 1-Wire Buskoppler USB, galvanisch Isoliert (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Hub II AC V2 (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Dual Schaltmodul 230V 5A (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire DS18B20 1-Wire Temp-Sensor (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire timed4channel Module (gibts leider nicht mehr zum Kauf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raumtemperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
Die Raumtemperatursensoren habe ich mit einem RJ45-Stecker und einem 1-Wire DS18B20 1-Wire Temp-Sensor realisiert. Hierzu habe ich den 1-Wire DS18B20 1-Wire Temp-Sensor in den RJ45-Stecker eingeführt und mit der Zange verpresst. Somit kann jede RJ45-Dose für einen Temperatursensor verwendet werden. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.jpg]]&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen ist in der zentrale Konfigurationsdatei nur der Zugriff auf den OWFS-Daemon und für jede Wohnung ein Include definiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr global userattr devStateIcon devStateStyle fp_Wohnung_EG icon sortby webCmd widgetOverride&lt;br /&gt;
&lt;br /&gt;
define TCM120_0 TCM 120 /dev/ttyUSB0@9600&lt;br /&gt;
define TCM120_1 TCM 120 /dev/ttyUSB1@9600&lt;br /&gt;
define myOWServer OWServer localhost:4304&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Wohnung-EG.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Wohnung-EG.cfg ==&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensor ===&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor habe ich um ein userReadings mit dem Namen Final erweitert. Somit kann ich, wenn ein Temperatursensor eine Abweichung hat, einen Korrekturwert angeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)-2.4;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup ===&lt;br /&gt;
&lt;br /&gt;
Um eine Temperaturanzeige kombiniert mit einem Symbol im Floorplan zu erzeugen, habe ich eine readingsGroup verwendet. Weiter kann sich die Hintergrundfarbe der readingsGroup abhängig vom Modus des Raumes ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Relais ===&lt;br /&gt;
&lt;br /&gt;
Um die Relais anzusteuern verwende ich einen readingsProxy. Den Status des readingsProxy lasse ich von der setFn setzen. In diesem Fall setzt die Funktion, timed4channel, das Relais und frägt gleich nach dem Setzen das Relais wieder ab. Ist der abgefragte Wert identisch mit dem gesetzten Wert, so ist der Bus funktional. Sind die Werte verschieden, wird der Staus des Relais auf &amp;quot;fail&amp;quot; gesetzt.&lt;br /&gt;
Bei verschiedenen Tests habe ich festgestellt, wenn ich für die Statusabfrage die ValueFn verwendet habe, und der Bus nicht funktional war, wurde der Status nur auf &amp;quot;off&amp;quot; statt auf &amp;quot;fail&amp;quot; gesetzt. Weiter kann das timed4channel-Modul nicht im nachhinein den Status des einzelnen Relais ausgeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verschiedene Temperaturen ===&lt;br /&gt;
&lt;br /&gt;
Für die Räume können zwei Temperaturen vorgegeben werden. Diese werden mit dem Modus-dummy umgeschaltet und auf das Soll-dummy kopiert. Die Syncronisation der Werte erfolgt mit dem notify &amp;quot;Wohnung_EG_Temperatur_Notify&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Farben für den Modus des Raumes ===&lt;br /&gt;
&lt;br /&gt;
Die Farben für die Modi der Raumtemperatur wird pro Wohnung gesetzt. Hierzu sind zwei dummy vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Offset für die Temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Pro Wohnung wird ein Offset für die Temperaturregelung festgelegt. Hiermit können unnötige Schaltvorgänge, verursacht durch Messdifferenzen, vermieden werden. Der Offset wird durch das at &amp;quot;Wohnung_EG_Temperaturregelung&amp;quot; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Betriebmodus für die Wohnung ===&lt;br /&gt;
&lt;br /&gt;
Es wird zwischen den Modi Sommer und Winter unterschieden. Im Normalfall ist im Sommer die Raumtemperatur höher als die vorgegebene Raumtemperatur. Hierdurch sind die Relais angezogen um die Zuleitung zu den Stellantrieben zu unterbrechen. Die Umschaltung auf Sommer bewirkt dass die Relais nicht angezogen sind, der Status jedoch als &amp;quot;off&amp;quot; angezeigt wird. Somit spare ich im Sommer den Strom für die angezogenen Relais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temepraturregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Temepraturregelung wird jede Minute angeworfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vollständige Konfigurationsdatei ===&lt;br /&gt;
&lt;br /&gt;
Im Voraus bin ich nur auf die &amp;quot;Besonderheiten&amp;quot; eingegangen. Hier die komplette Datei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG FLOORPLAN&lt;br /&gt;
attr Wohnung_EG fp_arrange 0&lt;br /&gt;
attr Wohnung_EG fp_backgroundimg fp_Wohnung_EG.png&lt;br /&gt;
attr Wohnung_EG fp_default 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_1 OWDevice 29.35A304000000&lt;br /&gt;
attr Wohnung_EG_Relais_1 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_1 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_1 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_2 OWDevice 29.1D8103000000&lt;br /&gt;
attr Wohnung_EG_Relais_2 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_2 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_2 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperatur_Notify notify Wohnung_EG_.*_Temperatur_.* {temperatursyncronisation($NAME,$EVENT);;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Flur----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor OWDevice 10.8AC3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Flur_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Anzeige readingsGroup Wohnung_EG_Flur_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige fp_Wohnung_EG 238,651,0,&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_Log FileLog ./log/Wohnung_EG_Flur_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Flur_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_SVG SVG Wohnung_EG_Flur_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_SVG room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Schlafen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Schlafen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Schlafen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_SVG SVG Wohnung_EG_Schlafen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_Log FileLog ./log/Wohnung_EG_Schlafen_Heizung_Log-%Y-%m.log Wohnung_EG_Schlafen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_SVG SVG Wohnung_EG_Schlafen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Bad----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll fp_Wohnung_EG 19,539,2,Soll&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor OWDevice 10.C9A3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Bad_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Anzeige readingsGroup Wohnung_EG_Bad_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige fp_Wohnung_EG 95,541,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Bad_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_Log FileLog ./log/Wohnung_EG_Bad_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Bad_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_SVG SVG Wohnung_EG_Bad_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung fp_Wohnung_EG 91,623,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setFn {timed4channel($DEVICE,1,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_Log FileLog ./log/Wohnung_EG_Bad_Heizung_Log-%Y-%m.log Wohnung_EG_Bad_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_SVG SVG Wohnung_EG_Bad_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Buero----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll fp_Wohnung_EG 39,381,2,Soll&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor OWDevice 10.E894FF010800 120&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Buero_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Anzeige readingsGroup Wohnung_EG_Buero_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige fp_Wohnung_EG 109,381,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Buero_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_Log FileLog ./log/Wohnung_EG_Buero_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Buero_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_SVG SVG Wohnung_EG_Buero_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung fp_Wohnung_EG 156,461,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setFn {timed4channel($DEVICE,2,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_Log FileLog ./log/Wohnung_EG_Buero_Heizung_Log-%Y-%m.log Wohnung_EG_Buero_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_SVG SVG Wohnung_EG_Buero_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Wohnen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll fp_Wohnung_EG 355,366,2,Soll&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor OWDevice 10.E0B40B020800 120&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Wohnen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Anzeige readingsGroup Wohnung_EG_Wohnen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige fp_Wohnung_EG 428,368,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Wohnen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Wohnen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Wohnen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_SVG SVG Wohnung_EG_Wohnen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung fp_Wohnung_EG 416,476,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setFn {timed4channel($DEVICE,3,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_Log FileLog ./log/Wohnung_EG_Wohnen_Heizung_Log-%Y-%m.log Wohnung_EG_Wohnen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_SVG SVG Wohnung_EG_Wohnen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Kueche----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll fp_Wohnung_EG 355,590,2,Soll&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor OWDevice 10.F8B8FF010800 120&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Kueche_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Anzeige readingsGroup Wohnung_EG_Kueche_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige fp_Wohnung_EG 428,593,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Kueche_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_Log FileLog ./log/Wohnung_EG_Kueche_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Kueche_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_SVG SVG Wohnung_EG_Kueche_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung readingsProxy Wohnung_EG_Relais_2:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung fp_Wohnung_EG 448,679,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_Log FileLog ./log/Wohnung_EG_Kueche_Heizung_Log-%Y-%m.log Wohnung_EG_Kueche_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_SVG SVG Wohnung_EG_Kueche_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
In der 99_myUtils.pm habe ich meine Skripte eingebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== timed4channel ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion wird das timed4Channel-Modul gesteuert. Vom Entwickler des Moduls habe ich folgende Beschreibung bekommen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Here some important details for your information:&lt;br /&gt;
&lt;br /&gt;
- The communication over the 1-Wire Bus goes via a DS2408 IC&lt;br /&gt;
- The DS2408 needs to be initialized so that all 8 Channels act as &amp;quot;Digital Outputs&amp;quot; and that Pin 10 (RSTZ) is configured as /STRB , an output strobe will occur after a PIO write (see Channel-Access Write command). The power-on default function of this pin is /RST.&lt;br /&gt;
&lt;br /&gt;
- You need to send 8-Bit Control words to the module - like&lt;br /&gt;
&lt;br /&gt;
P0 ... P5 =&amp;gt; [1 - 60] - Values for ON-Time in minutes&lt;br /&gt;
[0] - selected Channel OFF&lt;br /&gt;
[61] - selected Channel ON&lt;br /&gt;
[62] - all Channels OFF - regardless of Channel&lt;br /&gt;
&lt;br /&gt;
P6 and P7 =&amp;gt; [0 - 3] - Value 0 is channel 1, value 1 is channel 2, value 2 is channel 3, value 3 is channel 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples of binary control words:&lt;br /&gt;
&lt;br /&gt;
PPPPPPPP&lt;br /&gt;
76543210&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
01001010; Channel 2 for 10 minutes ON&lt;br /&gt;
&lt;br /&gt;
11100110; Channel 4 for 38 minutes ON&lt;br /&gt;
&lt;br /&gt;
10000000; Channel 3 OFF&lt;br /&gt;
&lt;br /&gt;
00111101; Channel 1 ON&lt;br /&gt;
&lt;br /&gt;
00111110; All Channels OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier der Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Steuerung des timed4channel 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-3)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer) &lt;br /&gt;
#&lt;br /&gt;
# Bsp: timed4channel(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
timed4channel($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!(($relais &amp;gt;= 0) &amp;amp;&amp;amp; ($relais &amp;lt;= 3))) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 61;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my $relaisstring = ( $relais &amp;lt;&amp;lt; 6 ) + $action;&lt;br /&gt;
	$relaisstring = ~$relaisstring;&lt;br /&gt;
	$relaisstring = $relaisstring &amp;amp; 255;&lt;br /&gt;
	$relaisstring = sprintf(&amp;quot;%08b&amp;quot;,$relaisstring);&lt;br /&gt;
	$relaisstring = reverse ($relaisstring);&lt;br /&gt;
&lt;br /&gt;
	$relaisstring =~ s/(.)/$1,/g;&lt;br /&gt;
	$relaisstring =~ s/(,$)//;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 61) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== piorelais ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion können Relais in Relaismodulen gesteuert werden, die für jedes Relais ein File zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ##############################################&lt;br /&gt;
# Prozedur zur Steuerung des 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-7)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: piorelais(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
piorelais($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!($relais =~ /^PIO\.[0-7AB]$/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 1) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion vergleicht den Soll- und Istwert der Raumtemperatur und schaltet ggf. das Relais. Ist die Raumtempertur unter dem Sollwert, wird der Raum auf den Sollwert plus Offset aufgeheizt. Ist diese Temperatur erreicht, wird das Relais, zur Unterbrechung der Zuleitung zum Stellantrieb, aktiviert. Somit wird der Raum nicht mehr beheizt bis der Sollwert unterschritten ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Regelung der Raumtemperatur&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Raumname      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. Offset        (z.B. 0.2)&lt;br /&gt;
#   3. Modus         (z.B. Sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperaturregelung(&amp;quot;Wohnung_OG_Kueche&amp;quot;,0.2,&amp;quot;Sommer&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperaturregelung($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($raum,$offset,$modus) = @_;&lt;br /&gt;
&lt;br /&gt;
	if ( $offset eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Offset ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$modus = lc($modus);&lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;sommer&amp;quot; )&lt;br /&gt;
	{&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
		fhem(&amp;quot;set $heizung sommer&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		my $sollwert = Value($raum.&amp;quot;_Temperatur_Soll&amp;quot;);&lt;br /&gt;
		my $istwert = ReadingsVal($raum.&amp;quot;_Temperatursensor&amp;quot;,&amp;quot;Final&amp;quot;,0);&lt;br /&gt;
		my $status = ReadingsVal($raum.&amp;quot;_Heizung&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		if ( $status eq &amp;quot;off&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert + $offset ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif ( $status eq &amp;quot;on&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;lt; $sollwert )&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== temperatursyncronisation ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion syncronisiert die Temperaturwerte der Dummys  ...Temperatur_Soll, ...Temperatur_Alternativ und ...Temperatur_Standard eines Raumes in Abhängigkeit vom ...Temperatur_Modus des Raumes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Syncronisation der Temperaturanzeigen&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Ausloesendes Device      (z.B. Wohnung_OG_Bad_Temperatur_Alternativ)&lt;br /&gt;
#   2. Event		        (z.B. 23.2)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperatursyncronisation(&amp;quot;Wohnung_OG_Bad_Temperatur_Alternativ&amp;quot;,23.2)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperatursyncronisation($$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 2) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($name,$event) = @_;&lt;br /&gt;
&lt;br /&gt;
	my @nameArray = split(/_/,$name);&lt;br /&gt;
	my $nameArrayLast = $nameArray[$#nameArray];&lt;br /&gt;
&lt;br /&gt;
	SELECT: {&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Soll&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $standarddevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $alternativdevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Modus&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modus = $event;&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $standard = Value($standarddevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $standard&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $alternativ = Value($alternativdevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $alternativ&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setBackgroundColor ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion setzt die Farbe der readingsGroup in Abhängigkeit vom ...Temperatur_Modus des Raumes und der für die Wohnung definierten Farben für die die Modi der Räume.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Rueckgabe der Farbe fuer den Background &lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. StandardfarbeDevice      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. AlternativfarbeDevice    (z.B. 0.2)&lt;br /&gt;
#   3. Modusdevice              (z.B. Wohnung_DG_Bad_Temperatur_Modus)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: setBackgroundColor(&amp;quot;Wohnung_OG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_OG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_DG_Kind_West_Temperatur_Modus&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
setBackgroundColor($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($standardfarbedevice,$alternativfarbedevice,$modusdevice) = @_;&lt;br /&gt;
&lt;br /&gt;
	my $modus = Value($modusdevice); &lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
       		Log 3, &amp;quot;Abbruch: Modus ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	MODUS: {&lt;br /&gt;
&lt;br /&gt;
		if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $standardfarbe = Value($standardfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $standardfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
               			Log 3, &amp;quot;Abbruch: Standardfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$standardfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
		if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $alternativfarbe = Value($alternativfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $alternativfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
	               		Log 3, &amp;quot;Abbruch: Alternativfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$alternativfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.jpg&amp;diff=7916</id>
		<title>Datei:Heizungssteuerung 1-Wire Temperatursensor Final.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.jpg&amp;diff=7916"/>
		<updated>2014-09-14T19:31:31Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.jpg&amp;diff=7915</id>
		<title>Datei:Heizungssteuerung 1-Wire Temperatursensor Einzelteile.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.jpg&amp;diff=7915"/>
		<updated>2014-09-14T19:31:01Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7914</id>
		<title>Heizungssteuerung 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Heizungssteuerung_1-Wire&amp;diff=7914"/>
		<updated>2014-09-14T19:30:16Z</updated>

		<summary type="html">&lt;p&gt;Tino.Glatzel: Die Seite wurde neu angelegt: „ In diesem Szenario arbeitet die Raumtemperatursteuerung als Erweiterung zu den in den Räumen installierten Raumtemperaturregler. In den Heizungsverteiler sin…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In diesem Szenario arbeitet die Raumtemperatursteuerung als Erweiterung zu den in den Räumen installierten Raumtemperaturregler. In den Heizungsverteiler sind Relaismodule eingebaut, über die die Steuerleitung vom Raumtemperaturregler zum Stellantrieb des Heizkreises über den Öffnerkontakt des Relais geführt ist. Ist die Raumtemperatur erreicht, wird das Relais aktiviert und die Zuleitung zum Stellantrieb wird unterbrochen. Es gab zwei Gründe die Temperatursteuerung auf diese Weise zu realisieren. Zum einen sind die Raumtemperaturregler sowieso immer auf den Maximalwert eingestellt und zum andern werden die Räume auch bei einem Defekt des Relaismodul warm. Fällt die Stromversorgung des Relais aus, ist der Öffnerkontakt geschlossen. Somit ist im schlimmsten Fall die Raumtempertur zu hoch &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Das System ist aus den folgenden Komponenten aufgebaut:&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi Hutschienen-Set (http://www.pollin.de)&lt;br /&gt;
* 1-Wire Buskoppler USB, galvanisch Isoliert (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Hub II AC V2 (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire Dual Schaltmodul 230V 5A (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire DS18B20 1-Wire Temp-Sensor (http://www.eservice-online.de)&lt;br /&gt;
* 1-Wire timed4channel Module (gibts leider nicht mehr zum Kauf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raumtemperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
Die Raumtemperatursensoren habe ich mit einem RJ45-Stecker und einem 1-Wire DS18B20 1-Wire Temp-Sensor realisiert. Hierzu habe ich den 1-Wire DS18B20 1-Wire Temp-Sensor in den RJ45-Stecker eingeführt und mit der Zange verpresst. Somit kann jede RJ45-Dose für einen Temperatursensor verwendet werden. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Einzelteile.png]]&lt;br /&gt;
[[Datei:Heizungssteuerung_1-Wire_Temperatursensor_Final.png]]&lt;br /&gt;
&lt;br /&gt;
== Zentrale FHEM Konfiguration fhem.cfg ==&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen ist in der zentrale Konfigurationsdatei nur der Zugriff auf den OWFS-Daemon und für jede Wohnung ein Include definiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr global userattr devStateIcon devStateStyle fp_Wohnung_EG icon sortby webCmd widgetOverride&lt;br /&gt;
&lt;br /&gt;
define TCM120_0 TCM 120 /dev/ttyUSB0@9600&lt;br /&gt;
define TCM120_1 TCM 120 /dev/ttyUSB1@9600&lt;br /&gt;
define myOWServer OWServer localhost:4304&lt;br /&gt;
&lt;br /&gt;
include /opt/fhem/include/Wohnung-EG.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdatei Wohnung-EG.cfg ==&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensor ===&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor habe ich um ein userReadings mit dem Namen Final erweitert. Somit kann ich, wenn ein Temperatursensor eine Abweichung hat, einen Korrekturwert angeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)-2.4;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup ===&lt;br /&gt;
&lt;br /&gt;
Um eine Temperaturanzeige kombiniert mit einem Symbol im Floorplan zu erzeugen, habe ich eine readingsGroup verwendet. Weiter kann sich die Hintergrundfarbe der readingsGroup abhängig vom Modus des Raumes ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Relais ===&lt;br /&gt;
&lt;br /&gt;
Um die Relais anzusteuern verwende ich einen readingsProxy. Den Status des readingsProxy lasse ich von der setFn setzen. In diesem Fall setzt die Funktion, timed4channel, das Relais und frägt gleich nach dem Setzen das Relais wieder ab. Ist der abgefragte Wert identisch mit dem gesetzten Wert, so ist der Bus funktional. Sind die Werte verschieden, wird der Staus des Relais auf &amp;quot;fail&amp;quot; gesetzt.&lt;br /&gt;
Bei verschiedenen Tests habe ich festgestellt, wenn ich für die Statusabfrage die ValueFn verwendet habe, und der Bus nicht funktional war, wurde der Status nur auf &amp;quot;off&amp;quot; statt auf &amp;quot;fail&amp;quot; gesetzt. Weiter kann das timed4channel-Modul nicht im nachhinein den Status des einzelnen Relais ausgeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verschiedene Temperaturen ===&lt;br /&gt;
&lt;br /&gt;
Für die Räume können zwei Temperaturen vorgegeben werden. Diese werden mit dem Modus-dummy umgeschaltet und auf das Soll-dummy kopiert. Die Syncronisation der Werte erfolgt mit dem notify &amp;quot;Wohnung_EG_Temperatur_Notify&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Farben für den Modus des Raumes ===&lt;br /&gt;
&lt;br /&gt;
Die Farben für die Modi der Raumtemperatur wird pro Wohnung gesetzt. Hierzu sind zwei dummy vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Offset für die Temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Pro Wohnung wird ein Offset für die Temperaturregelung festgelegt. Hiermit können unnötige Schaltvorgänge, verursacht durch Messdifferenzen, vermieden werden. Der Offset wird durch das at &amp;quot;Wohnung_EG_Temperaturregelung&amp;quot; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Betriebmodus für die Wohnung ===&lt;br /&gt;
&lt;br /&gt;
Es wird zwischen den Modi Sommer und Winter unterschieden. Im Normalfall ist im Sommer die Raumtemperatur höher als die vorgegebene Raumtemperatur. Hierdurch sind die Relais angezogen um die Zuleitung zu den Stellantrieben zu unterbrechen. Die Umschaltung auf Sommer bewirkt dass die Relais nicht angezogen sind, der Status jedoch als &amp;quot;off&amp;quot; angezeigt wird. Somit spare ich im Sommer den Strom für die angezogenen Relais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temepraturregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Temepraturregelung wird jede Minute angeworfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vollständige Konfigurationsdatei ===&lt;br /&gt;
&lt;br /&gt;
Im Voraus bin ich nur auf die &amp;quot;Besonderheiten&amp;quot; eingegangen. Hier die komplette Datei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG FLOORPLAN&lt;br /&gt;
attr Wohnung_EG fp_arrange 0&lt;br /&gt;
attr Wohnung_EG fp_backgroundimg fp_Wohnung_EG.png&lt;br /&gt;
attr Wohnung_EG fp_default 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_1 OWDevice 29.35A304000000&lt;br /&gt;
attr Wohnung_EG_Relais_1 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_1 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_1 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Relais_2 OWDevice 29.1D8103000000&lt;br /&gt;
attr Wohnung_EG_Relais_2 IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Relais_2 model DS2408&lt;br /&gt;
attr Wohnung_EG_Relais_2 room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Offset dummy&lt;br /&gt;
attr Wohnung_EG_Offset fp_Wohnung_EG 235,884,2,Offset&lt;br /&gt;
attr Wohnung_EG_Offset room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Offset setList state:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0&lt;br /&gt;
attr Wohnung_EG_Offset webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Farbe_Modus_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ setList state:white,lightgrey,lightblue,lightgreen,lightred&lt;br /&gt;
attr Wohnung_EG_Farbe_Modus_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Modus fp_Wohnung_EG 235,766,2,Modus&lt;br /&gt;
attr Wohnung_EG_Modus room Wohnung_EG_Technik&lt;br /&gt;
attr Wohnung_EG_Modus setList state:Sommer,Winter&lt;br /&gt;
attr Wohnung_EG_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperaturregelung at +*00:01:00 {temperaturregelung(&amp;quot;Wohnung_EG_Schlafen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Bad&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Buero&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Wohnen&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;\&lt;br /&gt;
						temperaturregelung(&amp;quot;Wohnung_EG_Kueche&amp;quot;,Value(&amp;quot;Wohnung_EG_Offset&amp;quot;),Value(&amp;quot;Wohnung_EG_Modus&amp;quot;));;}&lt;br /&gt;
attr Wohnung_EG_Temperaturregelung room Wohnung_EG_Technik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Temperatur_Notify notify Wohnung_EG_.*_Temperatur_.* {temperatursyncronisation($NAME,$EVENT);;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Flur----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor OWDevice 10.8AC3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Flur_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Anzeige readingsGroup Wohnung_EG_Flur_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige fp_Wohnung_EG 238,651,0,&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige room Wohnung_EG_Flur&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Flur_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_Log FileLog ./log/Wohnung_EG_Flur_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Flur_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_Log room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Flur_Temperatursensor_SVG SVG Wohnung_EG_Flur_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Flur_Temperatursensor_SVG room Wohnung_EG_Flur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Schlafen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll fp_Wohnung_EG 51,700,2,Soll&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor OWDevice 10.8B90E3010800 120&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Schlafen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Anzeige readingsGroup Wohnung_EG_Schlafen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige fp_Wohnung_EG 125,705,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Schlafen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Schlafen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Schlafen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Schlafen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Temperatursensor_SVG SVG Wohnung_EG_Schlafen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Temperatursensor_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung fp_Wohnung_EG 124,788,0,&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung room Wohnung_EG_Schlafen&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_Log FileLog ./log/Wohnung_EG_Schlafen_Heizung_Log-%Y-%m.log Wohnung_EG_Schlafen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_Log room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Schlafen_Heizung_SVG SVG Wohnung_EG_Schlafen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Schlafen_Heizung_SVG room Wohnung_EG_Schlafen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Bad----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll fp_Wohnung_EG 19,539,2,Soll&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor OWDevice 10.C9A3FF010800 120&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Bad_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Anzeige readingsGroup Wohnung_EG_Bad_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige fp_Wohnung_EG 95,541,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Bad_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Bad_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_Log FileLog ./log/Wohnung_EG_Bad_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Bad_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Temperatursensor_SVG SVG Wohnung_EG_Bad_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Temperatursensor_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung fp_Wohnung_EG 91,623,0,&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung room Wohnung_EG_Bad&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setFn {timed4channel($DEVICE,1,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_Log FileLog ./log/Wohnung_EG_Bad_Heizung_Log-%Y-%m.log Wohnung_EG_Bad_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_Log room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Bad_Heizung_SVG SVG Wohnung_EG_Bad_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Bad_Heizung_SVG room Wohnung_EG_Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Buero----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll fp_Wohnung_EG 39,381,2,Soll&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor OWDevice 10.E894FF010800 120&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Buero_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Anzeige readingsGroup Wohnung_EG_Buero_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige fp_Wohnung_EG 109,381,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Buero_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Buero_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_Log FileLog ./log/Wohnung_EG_Buero_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Buero_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Temperatursensor_SVG SVG Wohnung_EG_Buero_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Temperatursensor_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung fp_Wohnung_EG 156,461,0,&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung room Wohnung_EG_Buero&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setFn {timed4channel($DEVICE,2,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_Log FileLog ./log/Wohnung_EG_Buero_Heizung_Log-%Y-%m.log Wohnung_EG_Buero_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_Log room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Buero_Heizung_SVG SVG Wohnung_EG_Buero_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Buero_Heizung_SVG room Wohnung_EG_Buero&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Wohnen----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll fp_Wohnung_EG 355,366,2,Soll&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor OWDevice 10.E0B40B020800 120&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Wohnen_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Anzeige readingsGroup Wohnung_EG_Wohnen_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige fp_Wohnung_EG 428,368,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Wohnen_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Wohnen_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_Log FileLog ./log/Wohnung_EG_Wohnen_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Wohnen_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Temperatursensor_SVG SVG Wohnung_EG_Wohnen_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Temperatursensor_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung readingsProxy Wohnung_EG_Relais_1:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung fp_Wohnung_EG 416,476,0,&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung room Wohnung_EG_Wohnen&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setFn {timed4channel($DEVICE,3,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_Log FileLog ./log/Wohnung_EG_Wohnen_Heizung_Log-%Y-%m.log Wohnung_EG_Wohnen_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_Log room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Wohnen_Heizung_SVG SVG Wohnung_EG_Wohnen_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Wohnen_Heizung_SVG room Wohnung_EG_Wohnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------Wohnung_EG_Kueche----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Standard dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Standard webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Alternativ dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Alternativ webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Soll dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll fp_Wohnung_EG 355,590,2,Soll&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll setList state:17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Soll webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatur_Modus dummy&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus setList state:Standard,Alternativ&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatur_Modus webCmd state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor OWDevice 10.F8B8FF010800 120&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor IODev myOWServer&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor devStateIcon .*:icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor icon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor model DS18S20&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor userReadings Final {ReadingsVal(&amp;quot;Wohnung_EG_Kueche_Temperatursensor&amp;quot;,&amp;quot;temperature&amp;quot;,0)+0;;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Anzeige readingsGroup Wohnung_EG_Kueche_Temperatursensor:Final&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige fp_Wohnung_EG 428,593,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nameIcon icoTemp&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige noheading 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige nolinks 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige notime 1&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige style {setBackgroundColor(&amp;quot;Wohnung_EG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_EG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_EG_Kueche_Temperatur_Modus&amp;quot;);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueFormat %.2f °C&lt;br /&gt;
attr Wohnung_EG_Kueche_Anzeige valueStyle style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_Log FileLog ./log/Wohnung_EG_Kueche_Temperatursensor_Log-%Y-%m.log Wohnung_EG_Kueche_Temperatursensor:Final.*&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log logtype my_temperatursensor&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Temperatursensor_SVG SVG Wohnung_EG_Kueche_Temperatursensor_Log:my_temperatursensor:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Temperatursensor_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung readingsProxy Wohnung_EG_Relais_2:PIO.ALL&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung devStateIcon off:Heizung.off on:Heizung.on fail:Heizung.fail&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung fp_Wohnung_EG 448,679,0,&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung room Wohnung_EG_Kueche&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setFn {timed4channel($DEVICE,0,&amp;quot;$name&amp;quot;,$CMD);;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung setList on off fail sommer&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung valueFn {undef;;}&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung webCmd on:off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_Log FileLog ./log/Wohnung_EG_Kueche_Heizung_Log-%Y-%m.log Wohnung_EG_Kueche_Heizung:*&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log logtype my_Relais&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_Log room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define Wohnung_EG_Kueche_Heizung_SVG SVG Wohnung_EG_Kueche_Heizung_Log:my_Relais:CURRENT&lt;br /&gt;
attr Wohnung_EG_Kueche_Heizung_SVG room Wohnung_EG_Kueche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 99_myUtils.pm ==&lt;br /&gt;
&lt;br /&gt;
In der 99_myUtils.pm habe ich meine Skripte eingebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== timed4channel ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion wird das timed4Channel-Modul gesteuert. Vom Entwickler des Moduls habe ich folgende Beschreibung bekommen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Here some important details for your information:&lt;br /&gt;
&lt;br /&gt;
- The communication over the 1-Wire Bus goes via a DS2408 IC&lt;br /&gt;
- The DS2408 needs to be initialized so that all 8 Channels act as &amp;quot;Digital Outputs&amp;quot; and that Pin 10 (RSTZ) is configured as /STRB , an output strobe will occur after a PIO write (see Channel-Access Write command). The power-on default function of this pin is /RST.&lt;br /&gt;
&lt;br /&gt;
- You need to send 8-Bit Control words to the module - like&lt;br /&gt;
&lt;br /&gt;
P0 ... P5 =&amp;gt; [1 - 60] - Values for ON-Time in minutes&lt;br /&gt;
[0] - selected Channel OFF&lt;br /&gt;
[61] - selected Channel ON&lt;br /&gt;
[62] - all Channels OFF - regardless of Channel&lt;br /&gt;
&lt;br /&gt;
P6 and P7 =&amp;gt; [0 - 3] - Value 0 is channel 1, value 1 is channel 2, value 2 is channel 3, value 3 is channel 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples of binary control words:&lt;br /&gt;
&lt;br /&gt;
PPPPPPPP&lt;br /&gt;
76543210&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
01001010; Channel 2 for 10 minutes ON&lt;br /&gt;
&lt;br /&gt;
11100110; Channel 4 for 38 minutes ON&lt;br /&gt;
&lt;br /&gt;
10000000; Channel 3 OFF&lt;br /&gt;
&lt;br /&gt;
00111101; Channel 1 ON&lt;br /&gt;
&lt;br /&gt;
00111110; All Channels OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier der Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Steuerung des timed4channel 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-3)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer) &lt;br /&gt;
#&lt;br /&gt;
# Bsp: timed4channel(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
timed4channel($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!(($relais &amp;gt;= 0) &amp;amp;&amp;amp; ($relais &amp;lt;= 3))) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 61;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my $relaisstring = ( $relais &amp;lt;&amp;lt; 6 ) + $action;&lt;br /&gt;
	$relaisstring = ~$relaisstring;&lt;br /&gt;
	$relaisstring = $relaisstring &amp;amp; 255;&lt;br /&gt;
	$relaisstring = sprintf(&amp;quot;%08b&amp;quot;,$relaisstring);&lt;br /&gt;
	$relaisstring = reverse ($relaisstring);&lt;br /&gt;
&lt;br /&gt;
	$relaisstring =~ s/(.)/$1,/g;&lt;br /&gt;
	$relaisstring =~ s/(,$)//;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 61) {&lt;br /&gt;
		fhem(&amp;quot;set $controller strobe 1&amp;quot;);&lt;br /&gt;
		fhem(&amp;quot;set $controller PIO.ALL $relaisstring&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller PIO.ALL&amp;quot;) eq $relaisstring) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== piorelais ===&lt;br /&gt;
&lt;br /&gt;
Mit dieser Funktion können Relais in Relaismodulen gesteuert werden, die für jedes Relais ein File zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ##############################################&lt;br /&gt;
# Prozedur zur Steuerung des 1-Wire Relaismodul&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Relaismodul   (z.B. TestRelais)&lt;br /&gt;
#   2. Relais        (0-7)&lt;br /&gt;
#   3. readingsproxy (z.B. Relais_2)&lt;br /&gt;
#   4. Aktion        (on | off | sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: piorelais(&amp;quot;TestRelais&amp;quot;,2,&amp;quot;Relais_2&amp;quot;,&amp;quot;on&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
piorelais($$$$)&lt;br /&gt;
{&lt;br /&gt;
	if (scalar(@_) != 4) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($controller,$relais,$readingsproxy,$action) = @_;&lt;br /&gt;
	my $invertstate=0;&lt;br /&gt;
&lt;br /&gt;
	if (!($relais =~ /^PIO\.[0-7AB]$/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsches Relais, $relais.&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (($action =~ /[[:alpha:]]/) &amp;amp;&amp;amp; ($action =~ /[[:digit:]]/)) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action =~ /[[:alpha:]]/) {&lt;br /&gt;
		$action = lc($action);&lt;br /&gt;
		if ($action eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
			$action = 1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($action eq &amp;quot;sommer&amp;quot;) {&lt;br /&gt;
			$action = 0;&lt;br /&gt;
			$invertstate=1;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
                        Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Aktion, $action&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if ($action == 0) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			if ($invertstate == 1) {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				fhem(&amp;quot;setreading $readingsproxy state off&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action == 1) {&lt;br /&gt;
		fhem(&amp;quot;set $controller $relais $action&amp;quot;);&lt;br /&gt;
		if (fhem(&amp;quot;get $controller $relais&amp;quot;) eq $action) {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state on&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			fhem(&amp;quot;setreading $readingsproxy state fail&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===temperaturregelung ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion vergleicht den Soll- und Istwert der Raumtemperatur und schaltet ggf. das Relais. Ist die Raumtempertur unter dem Sollwert, wird der Raum auf den Sollwert plus Offset aufgeheizt. Ist diese Temperatur erreicht, wird das Relais, zur Unterbrechung der Zuleitung zum Stellantrieb, aktiviert. Somit wird der Raum nicht mehr beheizt bis der Sollwert unterschritten ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Regelung der Raumtemperatur&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Raumname      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. Offset        (z.B. 0.2)&lt;br /&gt;
#   3. Modus         (z.B. Sommer)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperaturregelung(&amp;quot;Wohnung_OG_Kueche&amp;quot;,0.2,&amp;quot;Sommer&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperaturregelung($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($raum,$offset,$modus) = @_;&lt;br /&gt;
&lt;br /&gt;
	if ( $offset eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Offset ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$modus = lc($modus);&lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;sommer&amp;quot; )&lt;br /&gt;
	{&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
		fhem(&amp;quot;set $heizung sommer&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		my $sollwert = Value($raum.&amp;quot;_Temperatur_Soll&amp;quot;);&lt;br /&gt;
		my $istwert = ReadingsVal($raum.&amp;quot;_Temperatursensor&amp;quot;,&amp;quot;Final&amp;quot;,0);&lt;br /&gt;
		my $status = ReadingsVal($raum.&amp;quot;_Heizung&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
		my $heizung = $raum.&amp;quot;_Heizung&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		if ( $status eq &amp;quot;off&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert + $offset ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif ( $status eq &amp;quot;on&amp;quot; )&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;lt; $sollwert )&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			if ( $istwert &amp;gt;= ( $sollwert ))&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung on&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				fhem(&amp;quot;set $heizung off&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== temperatursyncronisation ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion syncronisiert die Temperaturwerte der Dummys  ...Temperatur_Soll, ...Temperatur_Alternativ und ...Temperatur_Standard eines Raumes in Abhängigkeit vom ...Temperatur_Modus des Raumes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Syncronisation der Temperaturanzeigen&lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. Ausloesendes Device      (z.B. Wohnung_OG_Bad_Temperatur_Alternativ)&lt;br /&gt;
#   2. Event		        (z.B. 23.2)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: temperatursyncronisation(&amp;quot;Wohnung_OG_Bad_Temperatur_Alternativ&amp;quot;,23.2)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
temperatursyncronisation($$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 2) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($name,$event) = @_;&lt;br /&gt;
&lt;br /&gt;
	my @nameArray = split(/_/,$name);&lt;br /&gt;
	my $nameArrayLast = $nameArray[$#nameArray];&lt;br /&gt;
&lt;br /&gt;
	SELECT: {&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Soll&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $standarddevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $alternativdevice $event&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Standard&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modusdevice = $name;&lt;br /&gt;
			$modusdevice =~ s/$nameArrayLast/Modus/;&lt;br /&gt;
&lt;br /&gt;
			my $modus = Value($modusdevice);&lt;br /&gt;
			&lt;br /&gt;
			if ($modus eq &amp;quot;Alternativ&amp;quot;){ &lt;br /&gt;
&lt;br /&gt;
				my $solldevice = $name;&lt;br /&gt;
				$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
				fhem(&amp;quot;set $solldevice $event&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			last SELECT;&lt;br /&gt;
		}&lt;br /&gt;
		if ($nameArrayLast eq &amp;quot;Modus&amp;quot;){ &lt;br /&gt;
			&lt;br /&gt;
			my $modus = $event;&lt;br /&gt;
&lt;br /&gt;
			MODUS: {&lt;br /&gt;
&lt;br /&gt;
				if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $standarddevice = $name;&lt;br /&gt;
					$standarddevice =~ s/$nameArrayLast/Standard/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $standard = Value($standarddevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $standard&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
				if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
					my $alternativdevice = $name;&lt;br /&gt;
					$alternativdevice =~ s/$nameArrayLast/Alternativ/;&lt;br /&gt;
&lt;br /&gt;
					my $solldevice = $name;&lt;br /&gt;
					$solldevice =~ s/$nameArrayLast/Soll/;&lt;br /&gt;
&lt;br /&gt;
					my $alternativ = Value($alternativdevice);&lt;br /&gt;
&lt;br /&gt;
					fhem(&amp;quot;set $solldevice $alternativ&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
					last MODUS;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			last SELECT; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setBackgroundColor ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion setzt die Farbe der readingsGroup in Abhängigkeit vom ...Temperatur_Modus des Raumes und der für die Wohnung definierten Farben für die die Modi der Räume.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################################&lt;br /&gt;
# Prozedur zur Rueckgabe der Farbe fuer den Background &lt;br /&gt;
# Parameter: &lt;br /&gt;
#   1. StandardfarbeDevice      (z.B. Wohnung_OG_Kueche)&lt;br /&gt;
#   2. AlternativfarbeDevice    (z.B. 0.2)&lt;br /&gt;
#   3. Modusdevice              (z.B. Wohnung_DG_Bad_Temperatur_Modus)&lt;br /&gt;
#&lt;br /&gt;
# Bsp: setBackgroundColor(&amp;quot;Wohnung_OG_Farbe_Modus_Standard&amp;quot;,&amp;quot;Wohnung_OG_Farbe_Modus_Alternativ&amp;quot;,&amp;quot;Wohnung_DG_Kind_West_Temperatur_Modus&amp;quot;)&lt;br /&gt;
##############################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
setBackgroundColor($$$)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if (scalar(@_) != 3) {&lt;br /&gt;
                Log 3, &amp;quot;Abbruch: Falsche Anzahl von Parameter&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	my($standardfarbedevice,$alternativfarbedevice,$modusdevice) = @_;&lt;br /&gt;
&lt;br /&gt;
	my $modus = Value($modusdevice); &lt;br /&gt;
&lt;br /&gt;
	if ( $modus eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
       		Log 3, &amp;quot;Abbruch: Modus ist nicht initialisiert&amp;quot;;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	MODUS: {&lt;br /&gt;
&lt;br /&gt;
		if ($modus eq &amp;quot;Standard&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $standardfarbe = Value($standardfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $standardfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
               			Log 3, &amp;quot;Abbruch: Standardfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$standardfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
		if ($modus eq &amp;quot;Alternativ&amp;quot;){&lt;br /&gt;
&lt;br /&gt;
			my $alternativfarbe = Value($alternativfarbedevice);&lt;br /&gt;
&lt;br /&gt;
			if ( $alternativfarbe eq &amp;quot;???&amp;quot; ) {&lt;br /&gt;
	               		Log 3, &amp;quot;Abbruch: Alternativfarbe ist nicht initialisiert&amp;quot;;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &amp;quot;style=\&amp;quot;background-color:&amp;quot;.$alternativfarbe.&amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
			last MODUS;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Tino.Glatzel</name></author>
	</entry>
</feed>