<?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=Generix</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=Generix"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Generix"/>
	<updated>2026-04-14T11:33:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8369</id>
		<title>DevelopmentOpenIssues</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8369"/>
		<updated>2014-11-06T13:52:07Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* &amp;amp;#160;;; und&amp;amp;#160;%% */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Issues =&lt;br /&gt;
== Vor Entwicklungsbeginn von fhem 5.x zu klären ==&lt;br /&gt;
;Informationsumfang von xmllist&lt;br /&gt;
xmllist muss alle Werte mitnehmen, da sonst diese nie angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
xmllist hat auch weitere Daten:&lt;br /&gt;
&lt;br /&gt;
* die Liste aller möglichen set Werte&lt;br /&gt;
* die Liste aller möglichen Attribute&lt;br /&gt;
&lt;br /&gt;
Variante: Optionales Argument bei xmllist, das die Detailstufe oder der Informationsumfang eingrenzt.&lt;br /&gt;
&lt;br /&gt;
;Aufbau einer Polling-Infrastruktur für Geräte, die nicht aktiv den Zustand melden&lt;br /&gt;
Beispiele: EMEM, M232.&lt;br /&gt;
Denkbar auch zur Identifikation von toten Geräten (USF1000 muss alle 30 Minuten einen Wert liefern; bleibt der n mal aus, wird eine Warnung erzeugt).&lt;br /&gt;
&lt;br /&gt;
;Multithreading/Parallelisierung&lt;br /&gt;
Nähe zur Polling-Infrastruktur&lt;br /&gt;
&lt;br /&gt;
;Dokumentation&lt;br /&gt;
Standardfunktionen:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
;Erstellung eines Template-Moduls&lt;br /&gt;
Kommentierte Vorlage nn_Modul.pm fuer fhem 5.x.&lt;br /&gt;
&lt;br /&gt;
== Erweiterungen/Verbesserungen ==&lt;br /&gt;
;Auslagerung der Funktionen für die Bildung von Mittelwerten über Zeitintervalle in ein eigenes Modul&lt;br /&gt;
z.B. Niederschlag pro Tag, Woche, Monat&lt;br /&gt;
Module: CUL_WS,KS300,CUL_EM&lt;br /&gt;
&lt;br /&gt;
;contrib/dblog/93_DBLog ins FHEM-Verzeichnis aufrücken lassen&lt;br /&gt;
&lt;br /&gt;
Kann benutzt werden, um Events in Datenbanken zu loggen.&lt;br /&gt;
&lt;br /&gt;
Todos:&lt;br /&gt;
&lt;br /&gt;
* FileLog-artigen Getter implementieren&lt;br /&gt;
* Komplettdump&lt;br /&gt;
* Auflistung der gespeicherten Daten&lt;br /&gt;
;Logs und Zeitreihen&lt;br /&gt;
&lt;br /&gt;
Derzeit erfüllen Logs u.a. zwei grundverschiedene Aufgaben:&lt;br /&gt;
&lt;br /&gt;
* der Benutzer kann sehen, was zu einem bestimmten Zeitpunkt passiert ist&lt;br /&gt;
* ein Frontend kann daraus eine Zeitreihe ableiten für eine Grafik&lt;br /&gt;
&lt;br /&gt;
Es sollte geklärt werden, wie mit den daraus entstehenden Anforderungen an die Logs (möglichst gut menschenlesbar vs. möglichst gut maschinenverarbeitbar) optimal erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
= Martins Liste der Readings, Internals, etc. =&lt;br /&gt;
Beispiele:&lt;br /&gt;
local, LOCAL&lt;br /&gt;
po, PortObj&lt;br /&gt;
socket, SOCKET&lt;br /&gt;
Type, TYPE&lt;br /&gt;
&lt;br /&gt;
weitere teils unklare Bezeichnungen, die evtl. harmonisiert werden könnten:&lt;br /&gt;
DELTAUNIT, NUMUNITS, RAINUNIT, UNIT, UNITS, WINDUNIT&lt;br /&gt;
CODE, FamilyCode, HOUSE&lt;br /&gt;
INTERVAL, Timer, TRIGGERTIME&lt;br /&gt;
NAME, DeviceName&lt;br /&gt;
NR, DEVNR&lt;br /&gt;
&lt;br /&gt;
dann sind da die Standardfunktionen bei Initialize, die einfach mal&lt;br /&gt;
dokumentiert werden müssten:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
einer weiteren Betrachtung bedarf der Trigger für notify&#039;s:&lt;br /&gt;
CHANGED&lt;br /&gt;
sowie der eigentlichen&lt;br /&gt;
READINGS&lt;br /&gt;
die aber in einem anderen Kontext behandelt werden sollten.&lt;br /&gt;
&lt;br /&gt;
einige feste Parameter können vorab schonmal gefiltert werden:&lt;br /&gt;
DEF&lt;br /&gt;
IODev&lt;br /&gt;
NAME&lt;br /&gt;
NR&lt;br /&gt;
STATE&lt;br /&gt;
TYPE&lt;br /&gt;
&lt;br /&gt;
je nach IODev können weitere dazu kommen:&lt;br /&gt;
CUN868_MSGCNT&lt;br /&gt;
CUN868_RAWMSG&lt;br /&gt;
CUN868_RSSI&lt;br /&gt;
CUN868_TIME&lt;br /&gt;
LASTIODev&lt;br /&gt;
MSGCNT&lt;br /&gt;
RAWMSG&lt;br /&gt;
RSSI&lt;br /&gt;
&lt;br /&gt;
bei X10 fiel auf, das in den Internals&lt;br /&gt;
MODEL&lt;br /&gt;
gesetzt wird, aber explizit noch einmal&lt;br /&gt;
model&lt;br /&gt;
in den Attributes vorkommen.&lt;br /&gt;
&lt;br /&gt;
bei CUL_WS fiel auf, das die STATE summary sowohl in den Internals als auch in&lt;br /&gt;
den Readings auftaucht, obwohl in den Readings einzelne Werte vorhanden sind:&lt;br /&gt;
Internals:&lt;br /&gt;
STATE T: 16.7 H: 66.7&lt;br /&gt;
Readings:&lt;br /&gt;
humidity 66.7&lt;br /&gt;
state T: 16.7 H: 66.7&lt;br /&gt;
temperature 16.7 &lt;br /&gt;
&lt;br /&gt;
verbleibende Internals:&lt;br /&gt;
&lt;br /&gt;
ALARM&lt;br /&gt;
ATTR&lt;br /&gt;
BasicFeePerMonth&lt;br /&gt;
BTN&lt;br /&gt;
CHANGETIME&lt;br /&gt;
Cmd&lt;br /&gt;
CONTENT&lt;br /&gt;
corr1&lt;br /&gt;
corr2&lt;br /&gt;
corr3&lt;br /&gt;
corr4&lt;br /&gt;
CostPerUnit&lt;br /&gt;
currentlogfile&lt;br /&gt;
DELTAFACTOR&lt;br /&gt;
DELTAUNIT&lt;br /&gt;
DeviceName&lt;br /&gt;
DEVNR&lt;br /&gt;
DIAMETER&lt;br /&gt;
FACTOR&lt;br /&gt;
FamilyCode&lt;br /&gt;
FD&lt;br /&gt;
FH&lt;br /&gt;
FHTID&lt;br /&gt;
FIXNEW&lt;br /&gt;
FIXRENUMBER&lt;br /&gt;
GEOMETRY&lt;br /&gt;
HEIGHT&lt;br /&gt;
Host&lt;br /&gt;
HOUSE&lt;br /&gt;
ID&lt;br /&gt;
IDX&lt;br /&gt;
INATTR&lt;br /&gt;
INPUT&lt;br /&gt;
INSET&lt;br /&gt;
INTERVAL&lt;br /&gt;
INTV_ALARM&lt;br /&gt;
INTV_CHECK&lt;br /&gt;
LENGTH&lt;br /&gt;
LINK&lt;br /&gt;
LircObj&lt;br /&gt;
local&lt;br /&gt;
LOCAL&lt;br /&gt;
LOCATION&lt;br /&gt;
logfile&lt;br /&gt;
MAX&lt;br /&gt;
MOBILE&lt;br /&gt;
MODEL&lt;br /&gt;
NEXT_OPEN&lt;br /&gt;
NR_CMD_LAST_H&lt;br /&gt;
NR_EMSG&lt;br /&gt;
NR_FMSG&lt;br /&gt;
NR_KMSG&lt;br /&gt;
NR_RMSG&lt;br /&gt;
NR_TMSG&lt;br /&gt;
NTM&lt;br /&gt;
NUMUNITS&lt;br /&gt;
OFFSET&lt;br /&gt;
OLDDEF&lt;br /&gt;
OW_FAMILY&lt;br /&gt;
OWFS_ID&lt;br /&gt;
OW_ID&lt;br /&gt;
OW_PATH&lt;br /&gt;
OW_SCALE&lt;br /&gt;
PARTIAL&lt;br /&gt;
pipeopentime&lt;br /&gt;
po&lt;br /&gt;
PortObj&lt;br /&gt;
pos&lt;br /&gt;
PRESENT&lt;br /&gt;
PREV&lt;br /&gt;
QUEUE&lt;br /&gt;
RAINUNIT&lt;br /&gt;
RA_Timeout&lt;br /&gt;
RE&lt;br /&gt;
REGEXP&lt;br /&gt;
REP&lt;br /&gt;
RExt&lt;br /&gt;
ROUTERID&lt;br /&gt;
SelectObj&lt;br /&gt;
SENSOR&lt;br /&gt;
SERIAL&lt;br /&gt;
SERIALS&lt;br /&gt;
socket&lt;br /&gt;
SOCKET&lt;br /&gt;
STEP&lt;br /&gt;
TCPDev&lt;br /&gt;
Timer&lt;br /&gt;
TRIGGERTIME&lt;br /&gt;
ttytype&lt;br /&gt;
Type&lt;br /&gt;
UNIT&lt;br /&gt;
UNITS&lt;br /&gt;
USBDev&lt;br /&gt;
VERSION&lt;br /&gt;
VOLATILE&lt;br /&gt;
WIDTH&lt;br /&gt;
WINDUNIT&lt;br /&gt;
XMIT&lt;br /&gt;
XMIT_TIME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;#160;;; und&amp;amp;#160;%% ==&lt;br /&gt;
Das Problem ist, dass sowohl &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 set Lamp1 off;; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
als auch später (um 07:00)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Lamp1 off; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
vom gleichen AnalyzeCommandChain verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Diese erkennt an dem&amp;amp;#160;;;, dass die erste Zeile nicht zu trennen ist, die zweite&lt;br /&gt;
aber schon. In der ersten Zeile wird dann auch&amp;amp;#160;;; nach&amp;amp;#160;; gewandelt, und intern&lt;br /&gt;
speichert das &amp;quot;at&amp;quot; nur noch &amp;quot;set Lamp1 off; set Lamp2 off&amp;quot;. Bevor&lt;br /&gt;
AnalyzeCommand den Befehl ausführt, müssen perl- und shellskripte wieder ein ?? bekommen, um nicht von AnalyzeCommand an falscher Stelle zersägt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;richtige&amp;quot; Lösung wäre so etwas wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 [ set Lamp1 off; set Lamp2 off ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
erfordert aber einen Parser, der den passenden Klammer-zu findet, und das ist&lt;br /&gt;
aufwendig. &lt;br /&gt;
&lt;br /&gt;
Uns gefällt @,&amp;amp;#160;%,&amp;amp;#160;%EVTPART1, usw. immer weniger, wir&lt;br /&gt;
finden &amp;quot;magische&amp;quot; Variablen wie $DEVICE, $EVENT, $EVTPART1, usw. &lt;br /&gt;
logischer - sie würden keinen Stress mit @@/%% verursachen. Wir wissen nicht, wie man einen schmerzlosen&lt;br /&gt;
Übergang durchführt, insb. mit den vielen fhemwiki-Beispielen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8368</id>
		<title>DevelopmentOpenIssues</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8368"/>
		<updated>2014-11-06T13:51:15Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Erweiterungen/Verbesserungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Issues =&lt;br /&gt;
== Vor Entwicklungsbeginn von fhem 5.x zu klären ==&lt;br /&gt;
;Informationsumfang von xmllist&lt;br /&gt;
xmllist muss alle Werte mitnehmen, da sonst diese nie angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
xmllist hat auch weitere Daten:&lt;br /&gt;
&lt;br /&gt;
* die Liste aller möglichen set Werte&lt;br /&gt;
* die Liste aller möglichen Attribute&lt;br /&gt;
&lt;br /&gt;
Variante: Optionales Argument bei xmllist, das die Detailstufe oder der Informationsumfang eingrenzt.&lt;br /&gt;
&lt;br /&gt;
;Aufbau einer Polling-Infrastruktur für Geräte, die nicht aktiv den Zustand melden&lt;br /&gt;
Beispiele: EMEM, M232.&lt;br /&gt;
Denkbar auch zur Identifikation von toten Geräten (USF1000 muss alle 30 Minuten einen Wert liefern; bleibt der n mal aus, wird eine Warnung erzeugt).&lt;br /&gt;
&lt;br /&gt;
;Multithreading/Parallelisierung&lt;br /&gt;
Nähe zur Polling-Infrastruktur&lt;br /&gt;
&lt;br /&gt;
;Dokumentation&lt;br /&gt;
Standardfunktionen:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
;Erstellung eines Template-Moduls&lt;br /&gt;
Kommentierte Vorlage nn_Modul.pm fuer fhem 5.x.&lt;br /&gt;
&lt;br /&gt;
== Erweiterungen/Verbesserungen ==&lt;br /&gt;
;Auslagerung der Funktionen für die Bildung von Mittelwerten über Zeitintervalle in ein eigenes Modul&lt;br /&gt;
z.B. Niederschlag pro Tag, Woche, Monat&lt;br /&gt;
Module: CUL_WS,KS300,CUL_EM&lt;br /&gt;
&lt;br /&gt;
;contrib/dblog/93_DBLog ins FHEM-Verzeichnis aufrücken lassen&lt;br /&gt;
&lt;br /&gt;
Kann benutzt werden, um Events in Datenbanken zu loggen.&lt;br /&gt;
&lt;br /&gt;
Todos:&lt;br /&gt;
&lt;br /&gt;
* FileLog-artigen Getter implementieren&lt;br /&gt;
* Komplettdump&lt;br /&gt;
* Auflistung der gespeicherten Daten&lt;br /&gt;
;Logs und Zeitreihen&lt;br /&gt;
&lt;br /&gt;
Derzeit erfüllen Logs u.a. zwei grundverschiedene Aufgaben:&lt;br /&gt;
&lt;br /&gt;
* der Benutzer kann sehen, was zu einem bestimmten Zeitpunkt passiert ist&lt;br /&gt;
* ein Frontend kann daraus eine Zeitreihe ableiten für eine Grafik&lt;br /&gt;
&lt;br /&gt;
Es sollte geklärt werden, wie mit den daraus entstehenden Anforderungen an die Logs (möglichst gut menschenlesbar vs. möglichst gut maschinenverarbeitbar) optimal erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
= Martins Liste der Readings, Internals, etc. =&lt;br /&gt;
Beispiele:&lt;br /&gt;
local, LOCAL&lt;br /&gt;
po, PortObj&lt;br /&gt;
socket, SOCKET&lt;br /&gt;
Type, TYPE&lt;br /&gt;
&lt;br /&gt;
weitere teils unklare Bezeichnungen, die evtl. harmonisiert werden könnten:&lt;br /&gt;
DELTAUNIT, NUMUNITS, RAINUNIT, UNIT, UNITS, WINDUNIT&lt;br /&gt;
CODE, FamilyCode, HOUSE&lt;br /&gt;
INTERVAL, Timer, TRIGGERTIME&lt;br /&gt;
NAME, DeviceName&lt;br /&gt;
NR, DEVNR&lt;br /&gt;
&lt;br /&gt;
dann sind da die Standardfunktionen bei Initialize, die einfach mal&lt;br /&gt;
dokumentiert werden müssten:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
einer weiteren Betrachtung bedarf der Trigger für notify&#039;s:&lt;br /&gt;
CHANGED&lt;br /&gt;
sowie der eigentlichen&lt;br /&gt;
READINGS&lt;br /&gt;
die aber in einem anderen Kontext behandelt werden sollten.&lt;br /&gt;
&lt;br /&gt;
einige feste Parameter können vorab schonmal gefiltert werden:&lt;br /&gt;
DEF&lt;br /&gt;
IODev&lt;br /&gt;
NAME&lt;br /&gt;
NR&lt;br /&gt;
STATE&lt;br /&gt;
TYPE&lt;br /&gt;
&lt;br /&gt;
je nach IODev können weitere dazu kommen:&lt;br /&gt;
CUN868_MSGCNT&lt;br /&gt;
CUN868_RAWMSG&lt;br /&gt;
CUN868_RSSI&lt;br /&gt;
CUN868_TIME&lt;br /&gt;
LASTIODev&lt;br /&gt;
MSGCNT&lt;br /&gt;
RAWMSG&lt;br /&gt;
RSSI&lt;br /&gt;
&lt;br /&gt;
bei X10 fiel auf, das in den Internals&lt;br /&gt;
MODEL&lt;br /&gt;
gesetzt wird, aber explizit noch einmal&lt;br /&gt;
model&lt;br /&gt;
in den Attributes vorkommen.&lt;br /&gt;
&lt;br /&gt;
bei CUL_WS fiel auf, das die STATE summary sowohl in den Internals als auch in&lt;br /&gt;
den Readings auftaucht, obwohl in den Readings einzelne Werte vorhanden sind:&lt;br /&gt;
Internals:&lt;br /&gt;
STATE T: 16.7 H: 66.7&lt;br /&gt;
Readings:&lt;br /&gt;
humidity 66.7&lt;br /&gt;
state T: 16.7 H: 66.7&lt;br /&gt;
temperature 16.7 &lt;br /&gt;
&lt;br /&gt;
verbleibende Internals:&lt;br /&gt;
&lt;br /&gt;
ALARM&lt;br /&gt;
ATTR&lt;br /&gt;
BasicFeePerMonth&lt;br /&gt;
BTN&lt;br /&gt;
CHANGETIME&lt;br /&gt;
Cmd&lt;br /&gt;
CONTENT&lt;br /&gt;
corr1&lt;br /&gt;
corr2&lt;br /&gt;
corr3&lt;br /&gt;
corr4&lt;br /&gt;
CostPerUnit&lt;br /&gt;
currentlogfile&lt;br /&gt;
DELTAFACTOR&lt;br /&gt;
DELTAUNIT&lt;br /&gt;
DeviceName&lt;br /&gt;
DEVNR&lt;br /&gt;
DIAMETER&lt;br /&gt;
FACTOR&lt;br /&gt;
FamilyCode&lt;br /&gt;
FD&lt;br /&gt;
FH&lt;br /&gt;
FHTID&lt;br /&gt;
FIXNEW&lt;br /&gt;
FIXRENUMBER&lt;br /&gt;
GEOMETRY&lt;br /&gt;
HEIGHT&lt;br /&gt;
Host&lt;br /&gt;
HOUSE&lt;br /&gt;
ID&lt;br /&gt;
IDX&lt;br /&gt;
INATTR&lt;br /&gt;
INPUT&lt;br /&gt;
INSET&lt;br /&gt;
INTERVAL&lt;br /&gt;
INTV_ALARM&lt;br /&gt;
INTV_CHECK&lt;br /&gt;
LENGTH&lt;br /&gt;
LINK&lt;br /&gt;
LircObj&lt;br /&gt;
local&lt;br /&gt;
LOCAL&lt;br /&gt;
LOCATION&lt;br /&gt;
logfile&lt;br /&gt;
MAX&lt;br /&gt;
MOBILE&lt;br /&gt;
MODEL&lt;br /&gt;
NEXT_OPEN&lt;br /&gt;
NR_CMD_LAST_H&lt;br /&gt;
NR_EMSG&lt;br /&gt;
NR_FMSG&lt;br /&gt;
NR_KMSG&lt;br /&gt;
NR_RMSG&lt;br /&gt;
NR_TMSG&lt;br /&gt;
NTM&lt;br /&gt;
NUMUNITS&lt;br /&gt;
OFFSET&lt;br /&gt;
OLDDEF&lt;br /&gt;
OW_FAMILY&lt;br /&gt;
OWFS_ID&lt;br /&gt;
OW_ID&lt;br /&gt;
OW_PATH&lt;br /&gt;
OW_SCALE&lt;br /&gt;
PARTIAL&lt;br /&gt;
pipeopentime&lt;br /&gt;
po&lt;br /&gt;
PortObj&lt;br /&gt;
pos&lt;br /&gt;
PRESENT&lt;br /&gt;
PREV&lt;br /&gt;
QUEUE&lt;br /&gt;
RAINUNIT&lt;br /&gt;
RA_Timeout&lt;br /&gt;
RE&lt;br /&gt;
REGEXP&lt;br /&gt;
REP&lt;br /&gt;
RExt&lt;br /&gt;
ROUTERID&lt;br /&gt;
SelectObj&lt;br /&gt;
SENSOR&lt;br /&gt;
SERIAL&lt;br /&gt;
SERIALS&lt;br /&gt;
socket&lt;br /&gt;
SOCKET&lt;br /&gt;
STEP&lt;br /&gt;
TCPDev&lt;br /&gt;
Timer&lt;br /&gt;
TRIGGERTIME&lt;br /&gt;
ttytype&lt;br /&gt;
Type&lt;br /&gt;
UNIT&lt;br /&gt;
UNITS&lt;br /&gt;
USBDev&lt;br /&gt;
VERSION&lt;br /&gt;
VOLATILE&lt;br /&gt;
WIDTH&lt;br /&gt;
WINDUNIT&lt;br /&gt;
XMIT&lt;br /&gt;
XMIT_TIME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;#160;;; und&amp;amp;#160;%% ==&lt;br /&gt;
Das Problem ist, dass sowohl &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 set Lamp1 off;; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
als auch später (um 07:00)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Lamp1 off; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
vom gleichen AnalyzeCommandChain verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Diese erkennt an dem&amp;amp;#160;;;, dass die erste Zeile nicht zu trennen ist, die zweite&lt;br /&gt;
aber schon. In der ersten Zeile wird dann auch&amp;amp;#160;;; nach&amp;amp;#160;; gewandelt, und intern&lt;br /&gt;
speichert das &amp;quot;at&amp;quot; nur noch &amp;quot;set Lamp1 off; set Lamp2 off&amp;quot;. Bevor&lt;br /&gt;
AnalyzeCommand den Befehl ausführt, müssen perl- und shellskripte wieder ein&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt; bekommen, um nicht von AnalyzeCommand an falscher Stelle zersägt zu werden.&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Die &amp;quot;richtige&amp;quot; Lösung wäre so etwas wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 [ set Lamp1 off; set Lamp2 off ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
erfordert aber einen Parser, der den passenden Klammer-zu findet, und das ist&lt;br /&gt;
aufwendig. &lt;br /&gt;
&lt;br /&gt;
Uns gefällt @,&amp;amp;#160;%,&amp;amp;#160;%EVTPART1, usw. immer weniger, wir&lt;br /&gt;
finden &amp;quot;magische&amp;quot; Variablen wie $DEVICE, $EVENT, $EVTPART1, usw. &lt;br /&gt;
logischer - sie würden keinen Stress mit @@/%% verursachen. Wir wissen nicht, wie man einen schmerzlosen&lt;br /&gt;
Übergang durchführt, insb. mit den vielen fhemwiki-Beispielen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8367</id>
		<title>DevelopmentOpenIssues</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentOpenIssues&amp;diff=8367"/>
		<updated>2014-11-06T13:50:28Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Vor Entwicklungsbeginn von fhem 5.x zu klären */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Open Issues =&lt;br /&gt;
== Vor Entwicklungsbeginn von fhem 5.x zu klären ==&lt;br /&gt;
;Informationsumfang von xmllist&lt;br /&gt;
xmllist muss alle Werte mitnehmen, da sonst diese nie angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
xmllist hat auch weitere Daten:&lt;br /&gt;
&lt;br /&gt;
* die Liste aller möglichen set Werte&lt;br /&gt;
* die Liste aller möglichen Attribute&lt;br /&gt;
&lt;br /&gt;
Variante: Optionales Argument bei xmllist, das die Detailstufe oder der Informationsumfang eingrenzt.&lt;br /&gt;
&lt;br /&gt;
;Aufbau einer Polling-Infrastruktur für Geräte, die nicht aktiv den Zustand melden&lt;br /&gt;
Beispiele: EMEM, M232.&lt;br /&gt;
Denkbar auch zur Identifikation von toten Geräten (USF1000 muss alle 30 Minuten einen Wert liefern; bleibt der n mal aus, wird eine Warnung erzeugt).&lt;br /&gt;
&lt;br /&gt;
;Multithreading/Parallelisierung&lt;br /&gt;
Nähe zur Polling-Infrastruktur&lt;br /&gt;
&lt;br /&gt;
;Dokumentation&lt;br /&gt;
Standardfunktionen:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
;Erstellung eines Template-Moduls&lt;br /&gt;
Kommentierte Vorlage nn_Modul.pm fuer fhem 5.x.&lt;br /&gt;
&lt;br /&gt;
== Erweiterungen/Verbesserungen ==&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt; Auslagerung der Funktionen für die Bildung von Mittelwerten über Zeitintervalle in ein eigenes Modul&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
z.B. Niederschlag pro Tag, Woche, Monat&lt;br /&gt;
Module: CUL_WS,KS300,CUL_EM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt; contrib/dblog/93_DBLog ins FHEM-Verzeichnis aufrücken lassen&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Kann benutzt werden, um Events in Datenbanken zu loggen.&lt;br /&gt;
&lt;br /&gt;
Todos:&lt;br /&gt;
&lt;br /&gt;
* FileLog-artigen Getter implementieren&lt;br /&gt;
* Komplettdump&lt;br /&gt;
* Auflistung der gespeicherten Daten&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;Logs und Zeitreihen&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Derzeit erfüllen Logs u.a. zwei grundverschiedene Aufgaben:&lt;br /&gt;
&lt;br /&gt;
* der Benutzer kann sehen, was zu einem bestimmten Zeitpunkt passiert ist&lt;br /&gt;
* ein Frontend kann daraus eine Zeitreihe ableiten für eine Grafik&lt;br /&gt;
&lt;br /&gt;
Es sollte geklärt werden, wie mit den daraus entstehenden Anforderungen an die Logs (möglichst gut menschenlesbar vs. möglichst gut maschinenverarbeitbar) optimal erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
= Martins Liste der Readings, Internals, etc. =&lt;br /&gt;
Beispiele:&lt;br /&gt;
local, LOCAL&lt;br /&gt;
po, PortObj&lt;br /&gt;
socket, SOCKET&lt;br /&gt;
Type, TYPE&lt;br /&gt;
&lt;br /&gt;
weitere teils unklare Bezeichnungen, die evtl. harmonisiert werden könnten:&lt;br /&gt;
DELTAUNIT, NUMUNITS, RAINUNIT, UNIT, UNITS, WINDUNIT&lt;br /&gt;
CODE, FamilyCode, HOUSE&lt;br /&gt;
INTERVAL, Timer, TRIGGERTIME&lt;br /&gt;
NAME, DeviceName&lt;br /&gt;
NR, DEVNR&lt;br /&gt;
&lt;br /&gt;
dann sind da die Standardfunktionen bei Initialize, die einfach mal&lt;br /&gt;
dokumentiert werden müssten:&lt;br /&gt;
AttrFn&lt;br /&gt;
AttrList&lt;br /&gt;
Clients&lt;br /&gt;
DefFn&lt;br /&gt;
GetFn&lt;br /&gt;
ListFn&lt;br /&gt;
Match&lt;br /&gt;
MatchList&lt;br /&gt;
NotifyFn&lt;br /&gt;
ParseFn&lt;br /&gt;
ReadFn&lt;br /&gt;
ReadyFn&lt;br /&gt;
SetFn&lt;br /&gt;
ShutdownFn&lt;br /&gt;
StateFn&lt;br /&gt;
UndefFn&lt;br /&gt;
WriteFn&lt;br /&gt;
&lt;br /&gt;
einer weiteren Betrachtung bedarf der Trigger für notify&#039;s:&lt;br /&gt;
CHANGED&lt;br /&gt;
sowie der eigentlichen&lt;br /&gt;
READINGS&lt;br /&gt;
die aber in einem anderen Kontext behandelt werden sollten.&lt;br /&gt;
&lt;br /&gt;
einige feste Parameter können vorab schonmal gefiltert werden:&lt;br /&gt;
DEF&lt;br /&gt;
IODev&lt;br /&gt;
NAME&lt;br /&gt;
NR&lt;br /&gt;
STATE&lt;br /&gt;
TYPE&lt;br /&gt;
&lt;br /&gt;
je nach IODev können weitere dazu kommen:&lt;br /&gt;
CUN868_MSGCNT&lt;br /&gt;
CUN868_RAWMSG&lt;br /&gt;
CUN868_RSSI&lt;br /&gt;
CUN868_TIME&lt;br /&gt;
LASTIODev&lt;br /&gt;
MSGCNT&lt;br /&gt;
RAWMSG&lt;br /&gt;
RSSI&lt;br /&gt;
&lt;br /&gt;
bei X10 fiel auf, das in den Internals&lt;br /&gt;
MODEL&lt;br /&gt;
gesetzt wird, aber explizit noch einmal&lt;br /&gt;
model&lt;br /&gt;
in den Attributes vorkommen.&lt;br /&gt;
&lt;br /&gt;
bei CUL_WS fiel auf, das die STATE summary sowohl in den Internals als auch in&lt;br /&gt;
den Readings auftaucht, obwohl in den Readings einzelne Werte vorhanden sind:&lt;br /&gt;
Internals:&lt;br /&gt;
STATE T: 16.7 H: 66.7&lt;br /&gt;
Readings:&lt;br /&gt;
humidity 66.7&lt;br /&gt;
state T: 16.7 H: 66.7&lt;br /&gt;
temperature 16.7 &lt;br /&gt;
&lt;br /&gt;
verbleibende Internals:&lt;br /&gt;
&lt;br /&gt;
ALARM&lt;br /&gt;
ATTR&lt;br /&gt;
BasicFeePerMonth&lt;br /&gt;
BTN&lt;br /&gt;
CHANGETIME&lt;br /&gt;
Cmd&lt;br /&gt;
CONTENT&lt;br /&gt;
corr1&lt;br /&gt;
corr2&lt;br /&gt;
corr3&lt;br /&gt;
corr4&lt;br /&gt;
CostPerUnit&lt;br /&gt;
currentlogfile&lt;br /&gt;
DELTAFACTOR&lt;br /&gt;
DELTAUNIT&lt;br /&gt;
DeviceName&lt;br /&gt;
DEVNR&lt;br /&gt;
DIAMETER&lt;br /&gt;
FACTOR&lt;br /&gt;
FamilyCode&lt;br /&gt;
FD&lt;br /&gt;
FH&lt;br /&gt;
FHTID&lt;br /&gt;
FIXNEW&lt;br /&gt;
FIXRENUMBER&lt;br /&gt;
GEOMETRY&lt;br /&gt;
HEIGHT&lt;br /&gt;
Host&lt;br /&gt;
HOUSE&lt;br /&gt;
ID&lt;br /&gt;
IDX&lt;br /&gt;
INATTR&lt;br /&gt;
INPUT&lt;br /&gt;
INSET&lt;br /&gt;
INTERVAL&lt;br /&gt;
INTV_ALARM&lt;br /&gt;
INTV_CHECK&lt;br /&gt;
LENGTH&lt;br /&gt;
LINK&lt;br /&gt;
LircObj&lt;br /&gt;
local&lt;br /&gt;
LOCAL&lt;br /&gt;
LOCATION&lt;br /&gt;
logfile&lt;br /&gt;
MAX&lt;br /&gt;
MOBILE&lt;br /&gt;
MODEL&lt;br /&gt;
NEXT_OPEN&lt;br /&gt;
NR_CMD_LAST_H&lt;br /&gt;
NR_EMSG&lt;br /&gt;
NR_FMSG&lt;br /&gt;
NR_KMSG&lt;br /&gt;
NR_RMSG&lt;br /&gt;
NR_TMSG&lt;br /&gt;
NTM&lt;br /&gt;
NUMUNITS&lt;br /&gt;
OFFSET&lt;br /&gt;
OLDDEF&lt;br /&gt;
OW_FAMILY&lt;br /&gt;
OWFS_ID&lt;br /&gt;
OW_ID&lt;br /&gt;
OW_PATH&lt;br /&gt;
OW_SCALE&lt;br /&gt;
PARTIAL&lt;br /&gt;
pipeopentime&lt;br /&gt;
po&lt;br /&gt;
PortObj&lt;br /&gt;
pos&lt;br /&gt;
PRESENT&lt;br /&gt;
PREV&lt;br /&gt;
QUEUE&lt;br /&gt;
RAINUNIT&lt;br /&gt;
RA_Timeout&lt;br /&gt;
RE&lt;br /&gt;
REGEXP&lt;br /&gt;
REP&lt;br /&gt;
RExt&lt;br /&gt;
ROUTERID&lt;br /&gt;
SelectObj&lt;br /&gt;
SENSOR&lt;br /&gt;
SERIAL&lt;br /&gt;
SERIALS&lt;br /&gt;
socket&lt;br /&gt;
SOCKET&lt;br /&gt;
STEP&lt;br /&gt;
TCPDev&lt;br /&gt;
Timer&lt;br /&gt;
TRIGGERTIME&lt;br /&gt;
ttytype&lt;br /&gt;
Type&lt;br /&gt;
UNIT&lt;br /&gt;
UNITS&lt;br /&gt;
USBDev&lt;br /&gt;
VERSION&lt;br /&gt;
VOLATILE&lt;br /&gt;
WIDTH&lt;br /&gt;
WINDUNIT&lt;br /&gt;
XMIT&lt;br /&gt;
XMIT_TIME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;#160;;; und&amp;amp;#160;%% ==&lt;br /&gt;
Das Problem ist, dass sowohl &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 set Lamp1 off;; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
als auch später (um 07:00)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Lamp1 off; set Lamp2 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
vom gleichen AnalyzeCommandChain verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Diese erkennt an dem&amp;amp;#160;;;, dass die erste Zeile nicht zu trennen ist, die zweite&lt;br /&gt;
aber schon. In der ersten Zeile wird dann auch&amp;amp;#160;;; nach&amp;amp;#160;; gewandelt, und intern&lt;br /&gt;
speichert das &amp;quot;at&amp;quot; nur noch &amp;quot;set Lamp1 off; set Lamp2 off&amp;quot;. Bevor&lt;br /&gt;
AnalyzeCommand den Befehl ausführt, müssen perl- und shellskripte wieder ein&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt; bekommen, um nicht von AnalyzeCommand an falscher Stelle zersägt zu werden.&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Die &amp;quot;richtige&amp;quot; Lösung wäre so etwas wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define lampoff at 07:00 [ set Lamp1 off; set Lamp2 off ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
erfordert aber einen Parser, der den passenden Klammer-zu findet, und das ist&lt;br /&gt;
aufwendig. &lt;br /&gt;
&lt;br /&gt;
Uns gefällt @,&amp;amp;#160;%,&amp;amp;#160;%EVTPART1, usw. immer weniger, wir&lt;br /&gt;
finden &amp;quot;magische&amp;quot; Variablen wie $DEVICE, $EVENT, $EVTPART1, usw. &lt;br /&gt;
logischer - sie würden keinen Stress mit @@/%% verursachen. Wir wissen nicht, wie man einen schmerzlosen&lt;br /&gt;
Übergang durchführt, insb. mit den vielen fhemwiki-Beispielen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RFXtrx&amp;diff=4786</id>
		<title>RFXtrx</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RFXtrx&amp;diff=4786"/>
		<updated>2014-02-05T14:38:15Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* FHEM-Modul: TRX_SECURITY */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fhem unterstützt viele durch einen &#039;&#039;&#039;RFXtrx&#039;&#039;&#039;433 Transceiver erreichbare Geräte durch eigene Module.&lt;br /&gt;
&lt;br /&gt;
== Übersicht ==&lt;br /&gt;
[[File:Rfxtrx433.png|500px|right]]&lt;br /&gt;
&lt;br /&gt;
RFXtrx433 ist ein Transceiver (Funkempfänger und Funksender) mit USB-Anschluss für den Frenzbereich 433,92 MHz. Die Stromversorgung erfolgt über USB.  Das Gerät hat einen FTDI-FT232R-USB-Interface-Chip installiert. Um RFXtrx433 nutzen zu können, muss das Betriebssystem einen entsprechenden Treiber für diesen Chip haben. Genutzt wird RFXtrx433 von Anwendern mit FHEM unter Linux, Fritzbox 7390 oder Windows.&lt;br /&gt;
&lt;br /&gt;
Mit der mitgelieferten Firmware können viele Funksensoren in diesem Frequenzbereich empfangen werden und es ist möglich bestimmte Protokolle auch zu senden. Die unterstützten Protokolle sind von der installierten Firmware abhängig, die über das Windows-Programm [http://www.rfxcom.com/Downloads RFXflash] aktualisiert werden kann. Die neueste Firmware ist unter [http://www.rfxcom.com/Downloads http://www.rfxcom.com/Downloads] zu finden.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zu den von diesem Transceiver verfügbaren Protokolle beim Hersteller unter [http://www.rfxcom.com www.rfxcom.com]. Da der Hersteller die Anzahl der Geräte ständig aktualisiert und die FHEM-Treiber in der Freizeit des Autors geschrieben werden, sind in den FHEM-Treibern nur eine Untermenge implementiert. Sollte ein Gerät/Protokoll fehlen, das die Firma RFXCOM unterstützt, können Sie im [http://forum.fhem.de/ FHEM-Forum] in der Untergruppe RFXTRX nachfragen, ob dieses implementiert werden kann.&lt;br /&gt;
&lt;br /&gt;
TRXtrx433 wird derzeit von FHEM mit den Modulen TRX, TRX_LIGHT, TRX-SECURITY und TRX_WEATHER für eine Reihe von Protokollen unterstützt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend werden nur Geräte aufgezeigt, die bei der Erstellung dieses WIKI-Eintrages eingepflegt werden.&lt;br /&gt;
&lt;br /&gt;
== FHEM-Modul: TRX_WEATHER ==&lt;br /&gt;
Dieses Modul unterstützt Wettersensoren, insbesondere Sensoren des Herstellers Oregon-Scientific. Unter [http://www.rfxcom.com/oregon.htm Wetter-Sensoren] finden Sie eine Liste der von der RFXtrx433-Firmware unterstützten Wetter-Sensoren (Oregon-Scientific, Cresta, La Crosse, TFA, UPM, ...). Das FHEM-Modul TRX_WEATHER implementiert derzeit den Empfang folgender Sensorentypen und Sensoren:&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Temperatursensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;THR128&amp;quot;: Oregon-Scientific THR128/138, THC138&lt;br /&gt;
* &amp;quot;THGR132N&amp;quot;: Oregon-Scientific THC238/268,THN132,THWR288,THRN122,THN122,AW129/131&lt;br /&gt;
* &amp;quot;THWR800&amp;quot;: Oregon-Scientific THWR800&lt;br /&gt;
* &amp;quot;RTHN318&amp;quot;: Oregon-Scientific RTHN318&lt;br /&gt;
* &amp;quot;TS15C&amp;quot;: TS15C&lt;br /&gt;
* &amp;quot;VIKING_02811&amp;quot; : Viking 02811&lt;br /&gt;
* &amp;quot;WS2300&amp;quot; : La Crosse WS2300&lt;br /&gt;
* &amp;quot;RUBICSON&amp;quot; : RUBiCSON&lt;br /&gt;
* &amp;quot;TFA_303133&amp;quot; : TFA 30.3133&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Temperatur-/Luftffeuchtigkeitssensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;THGR228N&amp;quot;: Oregon-Scientific THGN122/123, THGN132, THGR122/228/238/268 [[File:Thgr228n.png|92px|right|thumb|THGR228N]]&lt;br /&gt;
* &amp;quot;THGR810&amp;quot;: Oregon-Scientific THGR810&lt;br /&gt;
* &amp;quot;RTGR328&amp;quot;: Oregon-Scientific RTGR328&lt;br /&gt;
* &amp;quot;THGR328&amp;quot;: Oregon-Scientific THGR328&lt;br /&gt;
* &amp;quot;WTGR800_T&amp;quot;: Oregon-Scientific WTGR800&lt;br /&gt;
* &amp;quot;THGR918&amp;quot;: Oregon-Scientific THGR918, THGRN228, THGN500&lt;br /&gt;
* &amp;quot;TFATS34C&amp;quot;: TFA TS34C (Kat. Nr. 30.3150)&lt;br /&gt;
* &amp;quot;WT450H&amp;quot;: UPM WT450H&lt;br /&gt;
* &amp;quot;TX3_T&amp;quot;: LaCrosse TX3, TX4, TX17&lt;br /&gt;
[[File:TX3TH.jpg|92px|right|thumb|TX3TH]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Nicht unterstützt werden von der RFXCOM-Firmware:&#039;&#039;&#039; TFA 30.3166&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Temperatur-/Luftffeuchtigkeits-/Luftdrucksensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;BTHR918&amp;quot;: Oregon-Scientific BTHR918&lt;br /&gt;
* &amp;quot;BTHR918N&amp;quot;: Oregon-Scientific/Huger BTHR918N, BTHR968 [[File:Bthr918n.png|96px|right|thumb|BTHR918N]]&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Regensensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;RGR918&amp;quot;: Oregon-Scientific RGR126/682/918&lt;br /&gt;
* &amp;quot;PCR800&amp;quot;: Oregon-Scientific PCR800&lt;br /&gt;
* &amp;quot;TFA_RAIN&amp;quot;: TFA-Regensensor (Kat. Nr. 30.3148)&lt;br /&gt;
* &amp;quot;RG700&amp;quot;: UPM RG700&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Windsensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;WTGR800_A&amp;quot;: Oregon-Scientific WTGR800&lt;br /&gt;
* &amp;quot;WGR800_A&amp;quot;: Oregon-Scientific WGR800&lt;br /&gt;
* &amp;quot;WGR918&amp;quot;: Oregon-Scientific STR918, WGR918&lt;br /&gt;
* &amp;quot;TFA_WIND&amp;quot;: TFA-Windsensor (Kat. Nr. 30.3149)&lt;br /&gt;
* &amp;quot;WDS500&amp;quot; : UPM WDS500&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;UV-Sensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;UVN128&amp;quot;: Oregon UVN128, UV138&lt;br /&gt;
* &amp;quot;UVN800&amp;quot;: Oregon UVN800&lt;br /&gt;
* &amp;quot;TFA_UV&amp;quot;: TFA_UV-Sensor&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Waagen&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;BWR101&amp;quot;: Oregon Scientific BWR101&lt;br /&gt;
* &amp;quot;GR101&amp;quot;: Oregon Scientific GR101&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Energiesensoren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;CM160&amp;quot;: OWL CM119 und CM160&lt;br /&gt;
* &amp;quot;CM180&amp;quot;: OWL CM180&lt;br /&gt;
&lt;br /&gt;
Der Autor des Module setzt derzeit folgende Sensoren ein:&lt;br /&gt;
&lt;br /&gt;
* Oregon Scientific: BTHR918, BTHR918N, PCR800, RGR918, THGR228N, THR128, THWR288A, WTGR800, WGR918&lt;br /&gt;
&lt;br /&gt;
Von Nutzern wurde die Funktion folgender weiterer Sensoren gemeldet:&lt;br /&gt;
&lt;br /&gt;
* Oregon Scientific GR101&lt;br /&gt;
* Oregon Scientific RTGR-328 (T/H)&lt;br /&gt;
* Honeywell TF-ATS34C (T/H)&lt;br /&gt;
* TFA Regensender 433 MHz, Kat. Nr. 30.3148, siehe [http://tfa-dostmann.de/index.php?id=57 TFA]&lt;br /&gt;
* TFA Windsender 433 MHz, Kat. Nr. 30.3149, siehe [http://tfa-dostmann.de/index.php?id=57 TFA]&lt;br /&gt;
* TFA T/H-Sender 433 MHz, Kat. Nr. 30.3150, siehe [http://tfa-dostmann.de/index.php?id=57 TFA]&lt;br /&gt;
* OWL CM160&lt;br /&gt;
&lt;br /&gt;
=== FAQ: Wie bringe ich FHEM dazu nicht alle paar Sekunden den Zustand der Sensoren zu loggen? ===&lt;br /&gt;
&lt;br /&gt;
Den ein oder anderen hat es schon genervt, dass die Oregon-Sensoren sehr gesprächig sind und damit das Filelog sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Abhilfe: Hierzu kann man event-min-interval verwenden, um festzulegen, dass Events nur alle x Minuten generiert werden. event-on-change-reading kann man verwenden, dass Änderungen trotzdem sofort bemerkt werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird ein Oregon-Sensor BTHR918 so konfiguriert, dass er nur alle 10 Minuten loggt, aber beim State die Änderungen sofort geloggt werden.&lt;br /&gt;
&lt;br /&gt;
 define Alte_Garage TRX_WEATHER BTHR918&lt;br /&gt;
 attr Alte_Garage event-min-interval state:600&lt;br /&gt;
 attr Alte_Garage event-on-change-reading state&lt;br /&gt;
 attr Alte_Garage event-on-update-reading .*&lt;br /&gt;
&lt;br /&gt;
Damit man nicht alles loggt, kann man das Logging auf die Zeilen beschränken, die mit T: beginnen:&lt;br /&gt;
&lt;br /&gt;
 define FileLog_Alte_Garage FileLog /var/log/fhem/Alte_Garage-%Y.log Alte_Garage:T\x3a.*&lt;br /&gt;
 attr FileLog_Alte_Garage logtype temp4press8:Temp/Press,temp4hum6dew10:Temp/Hum,text&lt;br /&gt;
&lt;br /&gt;
Damit hat man dann folgendes im Log:&lt;br /&gt;
&lt;br /&gt;
 2013-08-27_12:21:29 Alte_Garage T: 19.9 H: 69 P: 1005 BAT: low&lt;br /&gt;
 2013-08-27_12:31:37 Alte_Garage T: 19.9 H: 69 P: 1005 BAT: low&lt;br /&gt;
 2013-08-27_12:41:45 Alte_Garage T: 19.9 H: 69 P: 1005 BAT: low&lt;br /&gt;
 2013-08-27_12:47:27 Alte_Garage T: 20 H: 68 P: 1005 D: BAT: low&lt;br /&gt;
 2013-08-27_12:57:35 Alte_Garage T: 20 H: 68 P: 1005 D: BAT: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man sieht, wird normalerweise alle 10 Minuten geloggt. Um 12:47:27 hat sich die Temperatur verändert und damit wurde ausserhalb der Reihe sofort ein Event generiert.&lt;br /&gt;
&lt;br /&gt;
Ja, stimmt, ich muss noch die Batterie des Sensors wechseln (BAT: low) ;-)&lt;br /&gt;
&lt;br /&gt;
== FHEM-Modul: TRX_SECURITY ==&lt;br /&gt;
Empfängt Security-Sensoren der Protokolle X10-Security, KD101 und Visonic. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KD101 kompatible Rauchmelder&#039;&#039;&#039;&lt;br /&gt;
Es wurden folgende KD101-Versionen gemeldet, die mit RXFtrx433 empfangen werden können:&lt;br /&gt;
&lt;br /&gt;
* KD101LD&lt;br /&gt;
* KD101LA&lt;br /&gt;
* Flamingo FA20RF&lt;br /&gt;
* Elro RM150RF&lt;br /&gt;
* Unitec 46779&lt;br /&gt;
&lt;br /&gt;
Die Rauchmelder KD101 (KD101LD, KD101LA, Flamingo FA20RF, Elro RM150RF) haben folgendes Verhalten:&lt;br /&gt;
&lt;br /&gt;
* Wenn der KD101 selbst Rauch feststellt, kann man diesen Alarm über Funk nicht stoppen. Er sendet &amp;quot;alert&amp;quot; über Funk.&lt;br /&gt;
* Wenn man &amp;quot;alarm&amp;quot; über Funk an einen Rauchmelder sendet, dauert der Alarm nur wenige Sekunden. Für einen dauerhaften Alarm muss man also &amp;quot;alert&amp;quot; immer wieder senden.&lt;br /&gt;
* Wenn man die KD101 pairt, bekommen alle gepairten KD101 dieselbe ID.&lt;br /&gt;
* Wenn einer Rauch erkennt, triggert er alle KD101 mit derselben ID (also die gepairten).&lt;br /&gt;
* Nach Drücken der Taste &amp;quot;Test&amp;quot; am Rauchmelder sendet dieser &amp;quot;alert&amp;quot;. Dadurch wird per autocreate der Rauchmelder angelegt.&lt;br /&gt;
* Ein KD101 sendet kein Keepalive-Signal. Man kann also nur testen, ob ein Rauchmelder noch funktioniert, indem man die Test-Taste drückt.&lt;br /&gt;
&lt;br /&gt;
Mittels RFXtrx433 kann man die Befehle &amp;quot;alert&amp;quot; und &amp;quot;pair&amp;quot; an einen Rauchmelder senden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
* set TRX_KD101_a5ca00 alert&lt;br /&gt;
&lt;br /&gt;
Dies sendet den panic-Befehl an den Rauchmelder. Damit hört man ca. 3 Sekunden lang den nervigen Ton des Rauchmelders. Wer diesen länger haben will, muss das set nach ca. 3 Sekunden erneut auslösen.&lt;br /&gt;
Wer man also ein &amp;quot;set DEVICE alert&amp;quot; an einen Rauchmelder schickt, der mit anderen gepairt ist, dann wird der Alarm bei allen gepairten Rauchmeldern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;X10-Security-Sensoren&#039;&#039;&#039;&lt;br /&gt;
Folgende X10-Security-Sensoren werden erfolgreich eingesetzt:&lt;br /&gt;
&lt;br /&gt;
* Türsensoren:&lt;br /&gt;
** X10 Türsensor Powerhouse DS10A ([http://www.domotica.famschenk.eu/DS10A_op_433Mhz.html Umbau auf 433 Mhz])&lt;br /&gt;
** Marmitek Türsensor DS90&lt;br /&gt;
* Bewegungssensoren: &lt;br /&gt;
** X10 Bewegungssensor Powerhouse MS10A ([http://www.domotica.famschenk.eu/MS10A-433.html Umbau auf 433 Mhz])[[File:Ms10a.png|70px|right|thumb|MS10A]]&amp;lt;div class=&amp;quot;tright&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt;[[File:Ms90.png|82px|mini|ohne|MS90]]&amp;lt;/div&amp;gt;&lt;br /&gt;
** Marmitek Bewegungssensor MS10E/BNL (kompatibel mit X10 MS10)&lt;br /&gt;
** Marmitek Bewegungssensor MS90 &lt;br /&gt;
* Rauchmelder:&lt;br /&gt;
** Marmitek Rauchmelder SD90&lt;br /&gt;
&lt;br /&gt;
Die oben genannten Sensoren können auch parallel zum RFXtrx433 mit der Marmitek-Alarmanlage SC9000 eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
* Fernbedienungen:&lt;br /&gt;
** Marmitek KR21E [[File:Kr21e.png|60px|right|thumb|KR21E]]&amp;lt;div class=&amp;quot;tright&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt;[[File:Sh624.png|75px|mini|ohne|SH624]]&amp;lt;/div&amp;gt;&lt;br /&gt;
** Marmitek SH624 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X10-Security-Sensoren senden etwa jede Stunde ein Keepalive-Paket, welches auch Informationen über den Batterieladestand enthält.&lt;br /&gt;
&lt;br /&gt;
== FHEM-Modul: TRX_LIGHT.pm ==&lt;br /&gt;
Empfängt die Protokolle X10, ARC, ELRO AB400D, Waveman, Chacon EMW200, IMPULS, RisingSun, Philips SBC, AC, HomeEasy EU sowie ANSLUT lighting devices (switches and remote control). &lt;br /&gt;
&lt;br /&gt;
ARC ist ein a Protokoll, welches von Geräten HomeEasy, KlikAanKlikUit, ByeByeStandBy, Intertechno, ELRO, AB600, Duewi, DomiaLite und COCO genutzt wird. Typisch ist, dass diese Geräte einen Drehschalter haben, um die Protkolladresse einzustellen.&lt;br /&gt;
&lt;br /&gt;
Das ARC-Protokoll kennt keinen Dim-Befehl. Daher hat die Firmware vom RFXtrx433 und auch das FHEM-Modul TRX_LIGHT keinen solchen Befehl. Die verkauften Dimmer mit ARC-Protokoll starten gemäß meiner Information das Hoch-Dimmen nach Empfang zweier ON-Kommandos. Sobald dann das nächste ON oder OFF Kommando empfangen wird, wird das Dimmen beendet.&lt;br /&gt;
Das ganze ist also zeitabhängig und eigentlich nicht für die Hausautomatisierung gedacht, sondern für den Menschen, der sieht, ob der Dim-Level ok ist. Automatisiert bekommt man keine exakte prozentuale Dimmung hin, da man Dimmen nur über Timing erreichen kann.&lt;br /&gt;
Da FHEM nicht sehen kann wie weit gedimmt wurde, ist das allerdings nicht wirklich praktikabel und auch vom Gerät abhängig.&lt;br /&gt;
Unterschiedliche Geräte auch unterschiedliches Zeitverhalten.&lt;br /&gt;
&lt;br /&gt;
AC ist ein Protokoll, welches verschiedene Hersteller nutzen, die die Adresse über einen LEARN-Button lernen: KlikAanKlikUit, NEXA, CHACON, HomeEasy UK.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Achtung:&#039;&#039;Es sollte beachtet werden, dass Tür- und Bewegungssensoren des AC-Protokolls (HomeEasy alt, Chacon, KlikAanKlikUit, NEXA...) teilweise für 3-5 Sekunden etwa 50 Funkpakete generieren, was zu Kollisionen mit anderen Paketen führen kann. Siehe [http://www.domoticaforum.eu/viewtopic.php?f=7&amp;amp;amp;t=7276 Hinweis zur Nutzung von Bewegungssensoren]. Ich rate daher vom Einsatz von Bewegungssensoren mit dem AC-Protokoll ab.&lt;br /&gt;
&lt;br /&gt;
Der Autor des Moduls setzt derzeit folgende Geräte ein:&lt;br /&gt;
&lt;br /&gt;
* Eagle EyeMS14a Bewegungssensor ([http://www.domotica.famschenk.eu/MS14A_OP_433.92.html Umbau auf 433 Mhz])&lt;br /&gt;
* Elro AB600 Funksender und Steckdosen&lt;br /&gt;
&lt;br /&gt;
Nutzer haben die Funktion folgender Geräte gemeldet:&lt;br /&gt;
&lt;br /&gt;
* KAKU AWST-6000 (Bewegungsmelder, sendet on/off)&lt;br /&gt;
* KAKU AMST-606 (Tür-/Fenster-Kontakt, sendet all_level/off)&lt;br /&gt;
* KAKU AWMT-230 (Unterputzsender, sendet on/off)&lt;br /&gt;
* KAKU APA3-1500R (Schalter &amp;amp;amp; Handsender, nur on/off/all_off)&lt;br /&gt;
* KAKU CDB-6500AC (Türklingel, sendet nur chime)&lt;br /&gt;
&lt;br /&gt;
== PT2262 empfangen und senden mit TRX_LIGHT.pm ==&lt;br /&gt;
&#039;&#039;&#039;WARNUNG:&#039;&#039;&#039;PT2262-Codes sollten nur verwendet werden, wenn unbedingt erforderlich. Normalerweise reicht die Nutzung der von RFXCOM vordefinierten Dekodierungen wie das ARC-Protokoll aus. Bei manchen Geräten mit dem Chip PT2262 kann dies evtl. nicht ausreichen. Sinnvollerweise sollte man prüfen, ob das Gerät wirklich einen Funk-Encoder-IC PT2262 oder SC2262 enthält. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Es können nur PT2262-Codes empfangen werden, wenn das Pulse-Timung 350 usec ist (Siehe Kapitel 8 im RFXtrx User Guide). Gemäß Seite 6 im Dokument http://www.escol.com.my/Datasheets_specs/pt2262_1.pdf‎ sollte für den Oszillator normalerweise ein 3,3 Mega-Ohm-Widerstand eingebaut sein.&lt;br /&gt;
&lt;br /&gt;
=== PT2262-Format empfangen ===&lt;br /&gt;
Das Funk-Encoder-IC PT2262 der Firma PTC Taiwan (siehe [http://pdf.dzsc.com/88889/21967.pdf http://pdf.dzsc.com/88889/21967.pdf]) wird häufig in Fernbedienungen von Funksteckdosen und auch anderen Funkgeräten im 433-Mhz-Bereich verwendet. Es gibt viele PIN kompatible ICs wie z.B. der SC2262.&lt;br /&gt;
&lt;br /&gt;
Es werden hierbei 12 Zeichen im Tristate-Format (0, 1, 2 bzw. f) übertragen. Der erste Teil der Zeichen stellt die Adresse und die darauffolgenden Zeichen die Datenbits (Zeichen 0 oder 1) dar.&lt;br /&gt;
Die verwendeten Fernbedienungen haben häufig Dip-Schalter mit drei Zuständen (also 0,1,2), mit denen sich die Adressen einstellen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist vom Aufbau ähnlich zum ARC-Protokoll. &lt;br /&gt;
&lt;br /&gt;
Dabei lassen sich die ersten 6-12 Zeichen als Adressen (A0 bis A11) und die letzten 0-6 Zeichen (D5-D0) als Datenbits nutzen. Es sind damit insgesamt folgende Kombinationen der Bits möglich:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11&lt;br /&gt;
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 D0 &lt;br /&gt;
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D1 D0&lt;br /&gt;
A0 A1 A2 A3 A4 A5 A6 A7 A8 D2 D1 D0&lt;br /&gt;
A0 A1 A2 A3 A4 A5 A6 A7 D3 D2 D1 D0 &lt;br /&gt;
A0 A1 A2 A3 A4 A5 A6 D4 D3 D2 D1 D0 &lt;br /&gt;
A0 A1 A2 A3 A4 A5 D5 D4 D3 D2 D1 D0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit lassen sich also maximal 6-Bit-Daten übertragen. Dies reicht für einfache Schaltaufgaben, aber nicht für Anwendungen wie beispielsweise Thermometer.&lt;br /&gt;
&lt;br /&gt;
RFXtrx433 läßt sich über RFXmngr so konfigurieren, dass die 12-Zeichen-Datagramme des PT2262-Formats als 24-Bit-Nutzdaten bzw. 3 Bytes empfangen werden können. Dazu kann man in RFXmngr das Protokoll Lighting4 einschalten, wodurch gleichzeitig die Verarbeitung des ARC-Protokolls ausgeschaltet wird.&lt;br /&gt;
Hinweise zur Nutzung sind in [http://www.rfxcom.com/Documents/RFXtrx%20User%20Guide.pdf http://www.rfxcom.com/Documents/RFXtrx%20User%20Guide.pdf] (Kapitel &amp;quot;8. Transmit undecoded ARC commands&amp;quot;) zu finden.&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Modul TRX_LIGHT erlaubt die Verarbeitung des PT2262-Formates.&lt;br /&gt;
&lt;br /&gt;
Sobald Lighting4 eingeschaltet wird, werden die einzelnen Bits dem Gerät TRX_PT2262 zugeordnet. Sofern dieses noch nicht vorhanden ist, wird diesen per Autocreate definiert und ein entsprechendes Filelog angelegt.&lt;br /&gt;
&lt;br /&gt;
Wenn beispielsweise ein Nutzer einen Taster einer ELRO AB600 Fernbedienung drückt, werden je nach Codierung der Adresse folgende Codes im Filelog generiert:&lt;br /&gt;
&lt;br /&gt;
* Drücken der Taste &amp;quot;on&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_21:40:42 TRX_PT2262 111101110111&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Drücken von &amp;quot;off&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_21:40:47 TRX_PT2262 111101110110&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Auf diese Weise kann ein Nutzer sehen, welche PT2262-Codes von RFXtrx433 empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Der Nutzer muss danach selbst entscheiden, welche Zeichen Adressen und welche Daten darstellen und was die Daten bedeuten. Im oben genannten Beispiel ist dies relativ einfach. Man sieht, dass sich nur das letzte Bit ändern und die Zustände 0 und 1 annimmt. Es ist daher anzunehmen, dass die ersten 11 Zeichen die Adresse repräsentieren.&lt;br /&gt;
&lt;br /&gt;
TRX_LIGHT bietet die Möglichkeit den Adressprefix, die sogenannte deviceid selbst in einem define-Statement festzulegen.&lt;br /&gt;
Die Konvention ist dabei, dass die einzelnen Zeichen der Base4-Codierung angegeben werden müssen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; TRX_LIGHT PT2262 &amp;amp;lt;deviceid&amp;amp;gt; &amp;amp;lt;devicelog&amp;amp;gt; [&amp;amp;lt;commandcodes&amp;amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In commandcodes gibt man optional an wie die Ziffern Strings wie beispielsweise &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot; zugeordnet werden sollen. Dabei können über Komma getrennt wie die Ziffern den einzelnen Strings zugeordnet werden sollen. Jede einzelne Zuordnung wird über&amp;amp;#160;: angegeben. Zusätzlich sollte ein entsprechendes FileLog definiert werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define TRX_MYREMOTE1 TRX_LIGHT PT2262 11110111011 light 0:off,1:on&lt;br /&gt;
&lt;br /&gt;
 define FileLog_TRX_MYREMOTE1 FileLog /var/log/fhem/TRX_MYREMOTE1-%Y.log TRX_MYREMOTE1&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird die Ziffer 0 &amp;quot;off&amp;quot; und die Ziffer 1 &amp;quot;on&amp;quot; zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Damit werden nach Drücken der Tasten on und off folgende Einträge im Filelog wie folgt generiert:&lt;br /&gt;
&lt;br /&gt;
   ==&amp;amp;gt; TRX_MYREMOTE1-2012.log &amp;amp;lt;==&lt;br /&gt;
   2012-12-30_21:54:56 TRX_MYREMOTE1 light: on&lt;br /&gt;
   2012-12-30_21:54:56 TRX_MYREMOTE1 on&lt;br /&gt;
&lt;br /&gt;
   ==&amp;amp;gt; TRX_MYREMOTE1-2012.log &amp;amp;lt;==&lt;br /&gt;
   2012-12-30_21:54:59 TRX_MYREMOTE1 light: off&lt;br /&gt;
   2012-12-30_21:54:59 TRX_MYREMOTE1 off&lt;br /&gt;
&lt;br /&gt;
=== PT2262-Format senden ===&lt;br /&gt;
Mit dem Funk-Decoder-IC PT2272 lassen sich Signale von PT2262-Sendern empfangen.&lt;br /&gt;
RFXtrx433 ist in der Lage Funksignale im PT2262-Format zu senden, die dann mit Geräten empfangen werden können, die über den Funk-Decoder-IC PT2272 verfügen. Dazu ist es nicht erforderlich in RFXmngr das Protokoll Lighting4 einzuschalten.&lt;br /&gt;
&lt;br /&gt;
PT2262-Codes können über ein set-Kommando des vorher zu definierenden PT2262-Devices gesendet werden. Die Definition wurde auch schon bei &amp;quot;PT2262-Format empfangen&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; TRX_LIGHT PT2262 &amp;amp;lt;deviceid&amp;amp;gt; &amp;amp;lt;devicelog&amp;amp;gt; [&amp;amp;lt;commandcodes&amp;amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define TRX_MYREMOTE1 TRX_LIGHT PT2262 11110111011 light 0:off,1:on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Sobald das Device definiert wurde, kann der Code mittels set gesendet werden. Dabei kann man entweder der Base4-Code direkt angegeben werden oder der String der in &amp;amp;lt;commandcodes&amp;amp;gt; definiert wurde.&lt;br /&gt;
&lt;br /&gt;
Beispiele (senden von 1):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set TRX_MYREMOTE1 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;set TRX_MYREMOTE1 on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;set TRX_MYREMOTE1 off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit ein PT2262 Code gesendet werden kann, muss der Base4-Code bestehend aus &amp;amp;lt;deviceid&amp;amp;gt; und den Daten genau 12 Base4-Zeichen haben.&lt;br /&gt;
&lt;br /&gt;
Die mittels &amp;amp;lt;commandcodes&amp;amp;gt; definierten Strings werden in der Auswahlliste von set in der Weboberfläche von FHEM berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Fragen und Antworten (FAQ) ==&lt;br /&gt;
&lt;br /&gt;
=== Warum wird mein RFXtrx433 nicht erkannt? ===&lt;br /&gt;
&lt;br /&gt;
Das Gerät hat einen FTDI-FT232R-USB-Interface-Chip installiert. Um RFXtrx433 nutzen zu können, muss das Betriebssystem einen entsprechenden Treiber für diesen Chip haben. Dies ist normalerweise bei Linux oder Fritzbox 7390 der Fall. Bei Windows muss ein entsprechender Treiber installiert werden. Siehe auch http://www.rfxcom.com/Documents/RFXtrx%20User%20Guide.pdf .&lt;br /&gt;
&lt;br /&gt;
Bei Fritzbox 7270 und 7170 werden vom Hersteller AVM mit der Firmware keine Treiber für den FTDI-FT232R-USB-Interface-Chip mitgeliefert. &lt;br /&gt;
&lt;br /&gt;
=== Warum werden die Tasten meiner Fernbedienung nicht alle erkannt? ===&lt;br /&gt;
Ist geklärt, dass die Fernbedienung von der Firmware supportet wird? Gerade beim ARC-Protokoll ist es häufig so, dass die Hersteller unterschiedliche Codierungen verwenden. &lt;br /&gt;
&lt;br /&gt;
Es wurde berichtet, dass die Tasten folgende Fernbedienungen von der Firnware des RFXtrx433 nicht alle richtig erkannt werden:&lt;br /&gt;
* ELRO AB440RA&lt;br /&gt;
Bei folgende Fernbedienungen wurden berichtet, dass diese richtig erkannt werden:&lt;br /&gt;
* ELRO AB600RA&lt;br /&gt;
&lt;br /&gt;
Bitte weitere Fernbedienungen melden!&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Notify&amp;diff=4279</id>
		<title>Notify</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Notify&amp;diff=4279"/>
		<updated>2014-01-07T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Erklärung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notify, das mächtige Tool ==&lt;br /&gt;
Ein Versuch, die Funktionsweise von Notify verständlich zu erklären.&lt;br /&gt;
Da ich nur ein [[EIB / KNX|KNX (EIB)]] System habe, beziehen sich alle meine Beispiele auf KNX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Bitte Fehler verbessern. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WICHTIG: per Web editieren und den DEF Knopf benutzten.&lt;br /&gt;
Damit wird der Perlcode einfacher.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Was ist notify? &lt;br /&gt;
Notify ist eine der mächtigsten Funktionen bei Fhem. Sie dient dazu, Aktionen abhängig von einem anderen Status bzw. Ereignis auszulösen. Es ist damit möglich, Logikfunktionen im Fhem abzubilden.&lt;br /&gt;
&lt;br /&gt;
Z.B.: das Licht in der Küche wird eingeschaltet ====&amp;amp;gt; draus folgt, dass auch das Radio eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
=== Syntax von notify ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; notify &amp;amp;lt;pattern&amp;amp;gt; &amp;amp;lt;command&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Pattern ist sehr wichtig. Hier steht der Name einer Definition auf die das notify reagiert.&lt;br /&gt;
Wenn da z.B. Rollo1 steht, dann reagiert notify auf Rollo1 on und off und was es sonst noch alles gibt.&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Patterns möchte, kann man diese in Klammer schreiben (Rollo1|Rollo2|Steckdose5)&lt;br /&gt;
als Trenner wird dann Pipe (|) genutzt.&lt;br /&gt;
&lt;br /&gt;
Man kann auch mit Platzhaltern arbeiten.&lt;br /&gt;
&lt;br /&gt;
* Rollo. ==&amp;amp;gt; das notify reagiert auf alles was mit Rollo und &#039;&#039;&#039;einem&#039;&#039;&#039; weiteren beliebigen Zeichen anfängt. Also auf Rollo1 wie auch auf RolloG, aber nicht auf Rollo_wischundweg&lt;br /&gt;
* Rollo.* ==&amp;amp;gt; das notify reagiert auf alles das mit Rollo beginnt.&lt;br /&gt;
* *isch ==&amp;amp;gt; Reagiere auf alles das mit isch aufhört (Tisch, Fisch)&lt;br /&gt;
&lt;br /&gt;
=== Etwas schalten, wenn ein anderes Gerät geschaltet wird ===&lt;br /&gt;
Wenn man das obige mit KNX abbilden möchte, benötigt man auf der KNX Seite:&lt;br /&gt;
&lt;br /&gt;
==== Vorbereitung ====&lt;br /&gt;
* Gruppenadresse (GA) für die Steckdose vom Radio (0/0/10)&lt;br /&gt;
* GA vom Licht (0/0/20)&lt;br /&gt;
&lt;br /&gt;
Auf der Fhem Seite wird benötigt:&lt;br /&gt;
&lt;br /&gt;
* define RadioKueche EIB 0/0/10&lt;br /&gt;
* define LichtKueche EIB 0/0/20&lt;br /&gt;
&lt;br /&gt;
==== notify Befehl ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define LichtamRadioan notify LichtKueche { fhem &amp;quot;set RadioKueche&amp;amp;#160;%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
:&amp;lt;code&amp;gt;define LichtamRadioan notify LichtKueche set RadioKueche&amp;amp;#160;%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erklärung ====&lt;br /&gt;
* Der Begriff &amp;quot;LichtamRadioan&amp;quot; ist nur ein Platzhalter, damit das notify in Fhem verwaltet werden kann.&lt;br /&gt;
* &amp;quot;%&amp;quot; ist ein Platzhalter für den Zustand vom Pattern. % enthält ein &amp;quot;off&amp;quot; wenn das LichtKueche aus ist und ein &amp;quot;on&amp;quot; wenn das Licht eingeschaltet ist.&lt;br /&gt;
* &amp;quot;{ &amp;amp;lt;perlcode&amp;amp;gt; }&amp;quot; alles was zwischen {} steht ist Perl code. Perl kennt das Schlüsselwort Fhem. Das Schlüsselwort Fhem dient dazu, Fhem Befehle auszuführen. Es wird also der Fhem Befehl &amp;quot;set RadioKueche on/off&amp;quot; ausgeführt. on oder off ist abhängig vom Pattern. Der eigentliche Fhem Befehl muss in &amp;quot; &amp;quot; stehen.&lt;br /&gt;
&lt;br /&gt;
=== Einschalten von mehreren Geräten/Lampen, wenn das Licht eingeschaltet wird ===&lt;br /&gt;
==== Vorbereitung ====&lt;br /&gt;
KNX:&lt;br /&gt;
* 3 GAs für drei Geräten bzw Lampen (0/0/30 0/0/31 0/0/32)&lt;br /&gt;
&lt;br /&gt;
Fhem:&lt;br /&gt;
* define LichtWZ EIB 0/0/30&lt;br /&gt;
* define Steckdose1 EIB 0/0/31&lt;br /&gt;
* define Steckdose2 EIB 0/0/32&lt;br /&gt;
&lt;br /&gt;
==== notify Befehl ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define SteckdoseWZein notify LichtWZ { fhem &amp;quot;set Steckdose1&amp;amp;#160;%;;set Steckdose2&amp;amp;#160;%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
:&amp;lt;code&amp;gt;define SteckdoseWZein notify LichtWZ set Steckdose1,Steckdose2&amp;amp;#160;%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erklärung ====&lt;br /&gt;
Wenn das LichtWZ eingeschaltet wird, dann werden auch die Steckdosen (1 und 2) eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Einfache ODER Funktion ===&lt;br /&gt;
Eine einfache ODER Funktion kann sehr einfach Realisiert werden&lt;br /&gt;
&lt;br /&gt;
==== Vorbereitung ====&lt;br /&gt;
KNX:&lt;br /&gt;
* 3x GAs der abzufragende Werte (0/0/40 0/0/41 0/0/42)&lt;br /&gt;
&lt;br /&gt;
Fhem:&lt;br /&gt;
define Licht1 EIB 0/0/40&lt;br /&gt;
define Licht2 EIB 0/0/41&lt;br /&gt;
define Steckdose EIB 0/0/42&lt;br /&gt;
&lt;br /&gt;
==== notify Befehl ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define SteckdoseWZein notify (Licht1|Licht2) set Steckdose&amp;amp;#160;%&amp;lt;/code&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
:&amp;lt;code&amp;gt;define SteckdoseWZein notify (Licht.) set Steckdose&amp;amp;#160;%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erklärung ====&lt;br /&gt;
Die Werte in der Klammer (wichtig ist das&amp;amp;#160;»|«) sind die Rückgabewerte. Alternativ kann in diesem Beispiel auch&amp;amp;#160;»Licht.«&amp;amp;#160; (zu beachten ist der Punkt) geschrieben werden. Der Punkt ist ein Platzhalter für ein Zeichen (kommt glaube ich von Perl) &lt;br /&gt;
&lt;br /&gt;
Danach folgt der set Befehl.&lt;br /&gt;
Wenn also das Licht1 oder Licht2 den Wert &amp;quot;on&amp;quot; hat, dann hat auch die Steckdose den Wert &amp;quot;on&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Einfache UND Funktion ===&lt;br /&gt;
Ob man dieses Konstrukt noch als einfach bezeichnen kann, wage ich mal zu bezeifeln. In Fhem fehlen Loggingfunktionen, die man alle selber mit Perl Code erstellen kann (Danke an MAZ).&lt;br /&gt;
Dadurch ist Fhem zwar mächtig, wird aber für viele sehr kompliziert.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel soll - wenn drei Rollos geschlossen sind - am Taster eine LED eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorbereitung ====&lt;br /&gt;
KNX:&lt;br /&gt;
* 3x GDs für die Rückgabewert Rollo geschlossen == 1 (0/0/50 0/0/51 0/0/52)&lt;br /&gt;
* GD LED am Lichtschalter (0/0/106)&lt;br /&gt;
&lt;br /&gt;
Fhem:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define R1ZU EIB 0/0/50&lt;br /&gt;
attr R1ZU dummy 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define R2ZU EIB 0/0/51&lt;br /&gt;
attr R1ZU dummy 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define R3ZU EIB 0/0/52&lt;br /&gt;
attr R1ZU dummy 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define LEDalleRolloZu EIB 0/0/106&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Durch das Atribut dummy werden keine Schaltfunktion angeboten. Es kann nur Werte anzeigen.&lt;br /&gt;
&lt;br /&gt;
==== notify Befehl ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define nt.allerolloszu notify (R1ZU|R2ZU|R6ZU) {&lt;br /&gt;
my $r1 == $value{&amp;quot;R1ZU&amp;quot;};;&lt;br /&gt;
my $r2 == $value{&amp;quot;R2ZU&amp;quot;};;&lt;br /&gt;
my $r3 == $value{&amp;quot;R6ZU&amp;quot;};;&lt;br /&gt;
 if ($r1 eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; $r2 eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; $r3 eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
   fhem &amp;quot;set LEDalleRolloZu on&amp;quot;&lt;br /&gt;
 } else {&lt;br /&gt;
   fhem &amp;quot;set LEDalleRolloZu off&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erklärung ====&lt;br /&gt;
Es werden die drei Rückgabewerte R1ZU, R2ZU und R3ZU ausgewertet. Danach folgt Perl Code, deswegen beginnt das ganze mit einer { und endet mit }&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;my $r1 ==&amp;amp;gt; Variable $r1 definieren&lt;br /&gt;
== $value{&amp;quot;R1ZU&amp;quot;};; ==&amp;amp;gt; weist den Rückgabewert (on oder off) von R1ZU der Variable $r1 zu&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der doppelte&amp;amp;#160;;; ist ein Fhem Thema. Eigendlich würde für Perl ein&amp;amp;#160;; reichen. Aber Fhem nutzt selbst das&amp;amp;#160;; und daher wird ein&amp;amp;#160;;; benötigt. Mit den ersten drei my Zeilen werden die Rückgabewerte den Variabeln zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Danach erfolgt ein normales &amp;quot;if then else&amp;quot; Konstrukt. Die Zeile&amp;amp;#160;»($r1 eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; $r2 eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; $r3 eq &amp;quot;on&amp;quot;)«&amp;amp;#160;kann man so lesen: Wenn $r1 den Wert &amp;quot;on&amp;quot; und (&amp;amp;amp;&amp;amp;amp;) $r2 den Wert &amp;quot;on&amp;quot; und $r3 den Wert &amp;quot;on&amp;quot; dann schalte die LEDalleRolloZu ein {fhem(&amp;quot;set LEDalleRolloZu on&amp;quot;)}&lt;br /&gt;
ansonsten else schalte die LED aus. {fhem(&amp;quot;set LEDalleRolloZu off&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Zeitverzögert schalten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; || Zeitverzögert schalten&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Beschreibung:&#039;&#039;&#039; || Mit einem Notify zeitverzögert eine Aktion auslösen.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Vorbereitung:&#039;&#039;&#039; || Gerät &amp;quot;Lampe&amp;quot; ist definiert und es gibt eine Situation, die ein Ereignis &amp;quot;Fernbedienung:.*&amp;quot; generiert.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Befehl:&#039;&#039;&#039; || &amp;lt;code&amp;gt;define ntfy1 notify Fernbedienung:.* sleep 7.5;; set Lampe $EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Erläuterungen:&#039;&#039;&#039; || Bei Eintreten eines Ereignisses &amp;quot;Fernbedienung*&amp;quot; wird nach einer Pause von siebeneinhalb Sekunden der Befehl &amp;lt;set Lampe ??&amp;gt; ausgeführt, wobei der eigentliche Befehl aus dem auslösenden Ereignis übernommen wird.&lt;br /&gt;
:&#039;&#039;Quelle: [http://forum.fhem.de/index.php/topic,17161.0.html Fhem Forum]&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Eine PV-Anlage (Solarstrom) zur Steuerung der Rollos nutzen (optional Zeit und Datums abhängig) ===&lt;br /&gt;
Hier ein kleines Beispiel, wie ich mit Hilfe meiner PV-Anlage die Sonneneinstrahlung auf der Südseite ermittele.&lt;br /&gt;
Optional: Die Funktion soll allerdings nur zwischen 9:30 und 17:00 stattfinden. (zweites Beispiel)&lt;br /&gt;
Optional: Die Funktion soll nur zwischen dem 6 und 9 Monat funktioneren. (drittes Beispiel)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vorbereitung ====&lt;br /&gt;
PV Anlage mit SolarView abfragen.&lt;br /&gt;
Per Hand ermitteln, ab wieviel erzeugtem Strom es sinnvoll ist die Rollos zu schließen.&lt;br /&gt;
&lt;br /&gt;
==== notify Syntax ====&lt;br /&gt;
Fhem:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define sv SolarView solarview 15000 wr1 wr2 wr3 wr4&amp;lt;/code&amp;gt; (ich habe vier Wechselrichter)&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sv event-on-change-reading currentPower&amp;lt;/code&amp;gt; (weis nicht ob es wirklich benötigt wird)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define nt.sonnenlichtpersolar notify (sv:currentPower.*) { &lt;br /&gt;
if (%EVTPART1 &amp;amp;lt; 3000 ) {&lt;br /&gt;
 fhem(&#039;set Flur1 Auf&#039;);&lt;br /&gt;
}else {&lt;br /&gt;
 if (%EVTPART1 &amp;amp;gt; 5000 ) {&lt;br /&gt;
 fhem(&#039;set Flur1 Ab&#039;);&lt;br /&gt;
 } &lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Optional 1: Zeitabhängig&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(sv:currentPower.*) { &lt;br /&gt;
my $hm == sprintf(&amp;quot;%%02d:%%02d&amp;quot;, $hour, $min);&lt;br /&gt;
if ( $hm gt &amp;quot;09:30&amp;quot; &amp;amp;amp;&amp;amp;amp; $hm lt &amp;quot;17:00&amp;quot;) { &lt;br /&gt;
 if (%EVTPART1 &amp;amp;lt; 5000 ) {&lt;br /&gt;
  fhem(&#039;set Flur1 Auf&#039;);&lt;br /&gt;
  }else {&lt;br /&gt;
  if (%EVTPART1 &amp;amp;gt; 8000 ) {&lt;br /&gt;
  fhem(&#039;set Flur1 Ab&#039;);&lt;br /&gt;
  } &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Optional 2: Zeit und Datum&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(sv:currentPower.*) { &lt;br /&gt;
my $hm == sprintf(&amp;quot;%%02d:%%02d&amp;quot;, $hour, $min);&lt;br /&gt;
if( $month ge &amp;quot;6&amp;quot; &amp;amp;amp;&amp;amp;amp; $month le &amp;quot;9&amp;quot;) {&lt;br /&gt;
 if ( $hm gt &amp;quot;09:30&amp;quot; &amp;amp;amp;&amp;amp;amp; $hm lt &amp;quot;17:00&amp;quot;) { &lt;br /&gt;
 if (%EVTPART1 &amp;amp;lt; 5000 ) {&lt;br /&gt;
  fhem(&#039;set Flur1,RBUERO1,RBUERO2 Auf&#039;);&lt;br /&gt;
  }else {&lt;br /&gt;
  if (%EVTPART1 &amp;amp;gt; 8000 ) {&lt;br /&gt;
  fhem(&#039;set Flur1,Flur2,RBUERO1,RBUERO2 Ab&#039;);&lt;br /&gt;
  } &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erklärung ====&lt;br /&gt;
* Das define wird in der Kommandozeile im Webbrowser eingegeben.&lt;br /&gt;
* Anschliessend wird im Webbrowser die DEF bearbeitet, das erspart uns Probleme mit Perl&lt;br /&gt;
* define sv SolarView ... &amp;amp;lt;==== ist die Schnittstelle vom SolarView&lt;br /&gt;
* define nt.sonnenlichtpersolar notify (sv:currentPower.*) { &amp;amp;lt;==== hier wird ein notify angelegt, der auf das &amp;quot;define sv&amp;quot; Wert &amp;quot;currentPower.*&amp;quot; (.* ist irgendwas) reagiert&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;if (%EVTPART1 &amp;amp;lt; 3000 ) {&lt;br /&gt;
 fhem(&#039;set Flur1 Auf&#039;);&lt;br /&gt;
}else {&lt;br /&gt;
 if (%EVTPART1 &amp;amp;gt; 5000 ) {&lt;br /&gt;
 fhem(&#039;set Flur1 Ab&#039;);&lt;br /&gt;
 } &lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese IF Funktion wertet den Rückgabewert von currentPower aus. Hierbei muss man wissen, dass %EVTPART1 das Splitergebnis vom Rückgabewert ist&lt;br /&gt;
&lt;br /&gt;
Beispiel: Der Rückgabewert (wie im Beispiel) ist &amp;quot;currentPower: 6000&amp;quot;.&lt;br /&gt;
Jetzt steht im &amp;quot;%EVTPART0 == currentPower:&amp;quot; und im &amp;quot;%EVTPART1 == 6000&amp;quot;&lt;br /&gt;
Das bedeutet wir müssen uns nicht selbst den richtigen split (Perl Befehl) Aufruf ausdenken, das übernimmt Fhem.&lt;br /&gt;
&lt;br /&gt;
Ergebnis der ganzen Aktion: &lt;br /&gt;
Das Rollo wird abhängig von der erzeugten IST_Strommenge auf und zu gefahren.&lt;br /&gt;
Damit dies nicht dauernd hin und her pendelt, habe ich den Auf Wert sehr klein und den Ab Wert sehr groß gewählt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional 1:&#039;&#039;&#039; Der Block &amp;quot;my $hm == sprintf(&amp;quot;%%02d:%%02d&amp;quot;, $hour, $min);&amp;quot; erzeugt die Variable $hm mit dem Inhalt $hour:$min.&amp;amp;#160;%02d (wegen Fhem besonderheit&amp;amp;#160;%%02d) begrenzt die Ausgabe auf zwei Stellen (hab jetzt hoffentlich nichts Falsches geschrieben).&lt;br /&gt;
Danach wird mit &amp;quot;if ( $hm gt &amp;quot;09:30&amp;quot; &amp;amp;amp;&amp;amp;amp; $hm lt &amp;quot;17:00&amp;quot;) &amp;quot; geprüft, ob die Uhrzeit zwischen 9:30 und 17:00 liegt. lt == kleiner als; gt größer als. Es wäre auch ein le und ge möglich: le == kleiner/gleich als, ge == größer/gleich als.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional 2:&#039;&#039;&#039;if( $month ge &amp;quot;6&amp;quot; &amp;amp;amp;&amp;amp;amp; $month le &amp;quot;9&amp;quot;) {&lt;br /&gt;
&lt;br /&gt;
Hier frage ich die Default Variable $month (Monat) auf größer/gleich bzw kleiner/gleich ab.&lt;br /&gt;
Die Funktion arbeitet also nur zwischen dem sechsten und dem neunten Monat und dann auch nur zwischen 9:31 und 16:59.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
Achtung! Wenn man das Skript für den notify-Befehl über mehrere Zeilen schreibt, muss man anscheinend darauf achten, dass keine abschliessende Leerzeile mitgespeichert wird. Sonst wird der notify-Befehl ignoriert.&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
* [[Escapen in Perlbefehlen]]&lt;br /&gt;
* [[Klammerebnen|Klammerebenen]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Hilfsmodul]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3273</id>
		<title>Creating Plots - caching SVG&#039;s</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3273"/>
		<updated>2013-10-29T13:52:16Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Definition eines weblinks: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating Plots - caching SVG&#039;s =&lt;br /&gt;
== Das Problem: ==&lt;br /&gt;
Die Anzeige von Grafiken in FHEM benötigt relativ lange Zeit. Speziell, wenn es um längere Zeiträume (Monat/Jahr) geht, und viele Werte gespeichert sind, kann das schon in die 10+ Sekunden gehen.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung geht davon aus, dass grundsätzliches knowhow über fhem und wie Grafiken erstellt werden besteht. Grundlegende Infos sich unter: [http://www.fhemwiki.de/wiki/Creating_Plots Creating_Plots] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Der Lösungsansatz: ==&lt;br /&gt;
Alle Grafiken, die sich auf Werte in der Vergangenheit beziehen, ändern sich nicht mehr, werden aber dennoch jedesmal neu abgefragt und neu berechnet.&lt;br /&gt;
Für diese Art von Grafiken wird eine caching Lösung aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
dieses Beispiel geht von folgendener Situation aus:&lt;br /&gt;
&lt;br /&gt;
* es gibt ein DbLog (in diesem Beispiel myDbLog), dass alle readings speichert.&lt;br /&gt;
* es gibt einen Sensor (in diesem Beispiel &#039;&#039;&#039;AussenTempHum&#039;&#039;&#039;), der die readings &#039;&#039;&#039;temperature&#039;&#039;&#039; und &#039;&#039;&#039;humidity&#039;&#039;&#039; liefert.&lt;br /&gt;
* Das Beispiel geht davon aus, dass FHEM unter dem User fhem läuft.&lt;br /&gt;
&lt;br /&gt;
== Definitionen: ==&lt;br /&gt;
=== Definition eines weblinks: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_current_day weblink dbplot myDbLog:TempHum_MH&lt;br /&gt;
attr AussenTempHum_current_day label &amp;amp;quot;Temp- min: $data{min1}, max: $data{max1}, last: $data{currval1}, Feuchte- min: $data{min2}, max: $data{max2}, last: $data{currval2}&amp;amp;quot;&lt;br /&gt;
attr AussenTempHum_current_day plotfunction AussenTempHum&lt;br /&gt;
attr AussenTempHum_current_day title &amp;amp;quot;Aussen&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;plotfunction&#039;&#039;&#039; bestimmt welches device in der Datenbank selektiert wird (in diesem Beispiel AussenTempHum).&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;&#039;title&#039;&#039;&#039; und &#039;&#039;&#039;label&#039;&#039;&#039; bestimmt was in der Überschriftszeile des Plots steht.&lt;br /&gt;
&lt;br /&gt;
=== Definition des gplotfile (TempHum_MH.gplot): ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# TempHum_MH.gplot&lt;br /&gt;
# MH 12/2012 support both dblog and filelog&lt;br /&gt;
# Attribute &#039;small&#039; is useful for gnuplot/-scroll only,&lt;br /&gt;
# if plotsize is less than 800,400&lt;br /&gt;
#set terminal png transparent small size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set ytics nomirror&lt;br /&gt;
set y2tics&lt;br /&gt;
#set ytics&lt;br /&gt;
set title &#039;&amp;amp;lt;TL&amp;amp;gt; &amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;amp;quot;Temperature (°C)&amp;amp;quot;&lt;br /&gt;
set ylabel &amp;amp;quot;Humidity (%RF)&amp;amp;quot;&lt;br /&gt;
set yrange [0:99]&lt;br /&gt;
#FileLog 4:temperature:10:&lt;br /&gt;
#FileLog 4:humidity:50:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:temperature:10:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:humidity:50:&lt;br /&gt;
plot \&lt;br /&gt;
 ls l0 axes x1y2 title &#039;Measured temperature&#039; with lines&lt;br /&gt;
 ls l1fill axes x1y1 title &#039;Humidity&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nachdem diese beiden Definitionen erledigt sind, sollte es in FHEM eine Grafik geben, die in etwa so aussieht:&lt;br /&gt;
&lt;br /&gt;
[[File:Cachesvg.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bis hierher war alles standard fhem, das sollte also funktionieren bevor es zum schwierigen Teil kommt&amp;amp;#160;;-)&#039;&#039;&#039;&lt;br /&gt;
Wir brauchen ein Verzeichnis, um die Grafiken zu speichern, wo FHEM sie nachher auch wieder finden kann und darf:&lt;br /&gt;
In diesem Beispiel (telnet/SSH auf Raspberry PI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo mkdir /opt/fhem/svgcache/&lt;br /&gt;
sudo chown -R fhem:root /opt/fhem/svgcache/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
== erster Test ==&lt;br /&gt;
Ein erster Test (von der telnet/SSH commandline):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/svgcache/&lt;br /&gt;
sudo -u fhem wget -O testx.svg &#039;http://localhost:8083/fhem?cmd=showlog AussenTempHum_current_day myDbLog TempHum_MH -&amp;amp;amp;pos=zoom=month;off=0&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Die wesentlichen Parameter sind: &lt;br /&gt;
 sudo -u fhem   - damit läuft das wget unter dem user &#039;fhem&#039;, damit es keine Probleme mit Dateiberechtigungen gibt. &lt;br /&gt;
 -O testx.svg - das ist der filename, unter dem die erstellte svg gespeichert wird.&lt;br /&gt;
 [http://localhost:8083 http://localhost:8083]     - muß jeweils angepasst werden....&lt;br /&gt;
 &amp;amp;amp;pos=zoom=xxx;off=yyy&lt;br /&gt;
  xxx: year, month, week, day - die Zeitspanne&lt;br /&gt;
  yyy: 0, -1, -2, ...     - wieviel Zeitspannen zurück, 0==aktuell&lt;br /&gt;
Beipiel: &amp;amp;amp;pos=zoom=month;off=-1 - ergibt die Grafik des vorigen Monats.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und das Ergebnis bewundern (im Browser):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://localhost:8083/fhem/svgcache/testx.svg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es sollte jetzt die gewünschte Grafik aufgebaut werden. &lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
Automatisieren der Grafikerstellung mittels fhem at....&lt;br /&gt;
&lt;br /&gt;
== Die gespeicherten SVG&#039;s von FHEM anzeigen lassen ==&lt;br /&gt;
=== Definitionen: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_lastmonth weblink htmlCode &amp;amp;lt;br/&amp;amp;gt;&amp;amp;lt;object data=&amp;amp;quot;/fhem/svgcache/AussenTempHum_month-last.svg&amp;amp;quot; type=&amp;amp;quot;image/svg+xml&amp;amp;quot; width=&amp;amp;quot;800&amp;amp;quot; height=&amp;amp;quot;160&amp;amp;quot; name=&amp;amp;quot;weblink_test&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt; &amp;amp;lt;br/&amp;amp;gt; &amp;amp;lt;a href=&amp;amp;quot;/fhem?detail=AussenTempHum_lastmonth&amp;amp;quot;&amp;amp;gt;AussenTempHum last month&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit teilen wir fhem mit, wo die Grafik zu finden ist (object data=&amp;quot;&#039;&#039;&#039;/fhem/svgcache/Au...&#039;&#039;&#039;).&lt;br /&gt;
Der file-name muß natürlich mit dem aus dem vorigen wget übereinstimmen!&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Damit können beliebige plots definert und gepeichert werden und von fhem relativ schnell abgerufen werden.&lt;br /&gt;
Grundsätzlich wäre diese Lösung auch ohne DbLog möglich, allerdings müssten dazu die Beispiele überarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Have fun&lt;br /&gt;
Erwin.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3272</id>
		<title>Creating Plots - caching SVG&#039;s</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3272"/>
		<updated>2013-10-29T13:52:00Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Definition eines weblinks: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating Plots - caching SVG&#039;s =&lt;br /&gt;
== Das Problem: ==&lt;br /&gt;
Die Anzeige von Grafiken in FHEM benötigt relativ lange Zeit. Speziell, wenn es um längere Zeiträume (Monat/Jahr) geht, und viele Werte gespeichert sind, kann das schon in die 10+ Sekunden gehen.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung geht davon aus, dass grundsätzliches knowhow über fhem und wie Grafiken erstellt werden besteht. Grundlegende Infos sich unter: [http://www.fhemwiki.de/wiki/Creating_Plots Creating_Plots] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Der Lösungsansatz: ==&lt;br /&gt;
Alle Grafiken, die sich auf Werte in der Vergangenheit beziehen, ändern sich nicht mehr, werden aber dennoch jedesmal neu abgefragt und neu berechnet.&lt;br /&gt;
Für diese Art von Grafiken wird eine caching Lösung aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
dieses Beispiel geht von folgendener Situation aus:&lt;br /&gt;
&lt;br /&gt;
* es gibt ein DbLog (in diesem Beispiel myDbLog), dass alle readings speichert.&lt;br /&gt;
* es gibt einen Sensor (in diesem Beispiel &#039;&#039;&#039;AussenTempHum&#039;&#039;&#039;), der die readings &#039;&#039;&#039;temperature&#039;&#039;&#039; und &#039;&#039;&#039;humidity&#039;&#039;&#039; liefert.&lt;br /&gt;
* Das Beispiel geht davon aus, dass FHEM unter dem User fhem läuft.&lt;br /&gt;
&lt;br /&gt;
== Definitionen: ==&lt;br /&gt;
=== Definition eines weblinks: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_current_day weblink dbplot myDbLog:TempHum_MH&lt;br /&gt;
attr AussenTempHum_current_day label &amp;amp;quot;Temp- min: $data{min1}, max: $data{max1}, last: $data{currval1}, Feuchte- min: $data{min2}, max: $data{max2}, last: $data{currval2}&amp;amp;quot;&lt;br /&gt;
attr AussenTempHum_current_day plotfunction AussenTempHum&lt;br /&gt;
attr AussenTempHum_current_day title &amp;amp;quot;Aussen&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;plotfunction&#039;&#039;&#039; bestimmt welches device in der Datenbank selektiert wird (in diesem Beispiel AussenTempHum).&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;&#039;title&#039;&#039;&#039; und &#039;&#039;&#039; label&#039;&#039;&#039;bestimmt was in der Überschriftszeile des Plots steht.&lt;br /&gt;
&lt;br /&gt;
=== Definition des gplotfile (TempHum_MH.gplot): ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# TempHum_MH.gplot&lt;br /&gt;
# MH 12/2012 support both dblog and filelog&lt;br /&gt;
# Attribute &#039;small&#039; is useful for gnuplot/-scroll only,&lt;br /&gt;
# if plotsize is less than 800,400&lt;br /&gt;
#set terminal png transparent small size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set ytics nomirror&lt;br /&gt;
set y2tics&lt;br /&gt;
#set ytics&lt;br /&gt;
set title &#039;&amp;amp;lt;TL&amp;amp;gt; &amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;amp;quot;Temperature (°C)&amp;amp;quot;&lt;br /&gt;
set ylabel &amp;amp;quot;Humidity (%RF)&amp;amp;quot;&lt;br /&gt;
set yrange [0:99]&lt;br /&gt;
#FileLog 4:temperature:10:&lt;br /&gt;
#FileLog 4:humidity:50:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:temperature:10:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:humidity:50:&lt;br /&gt;
plot \&lt;br /&gt;
 ls l0 axes x1y2 title &#039;Measured temperature&#039; with lines&lt;br /&gt;
 ls l1fill axes x1y1 title &#039;Humidity&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nachdem diese beiden Definitionen erledigt sind, sollte es in FHEM eine Grafik geben, die in etwa so aussieht:&lt;br /&gt;
&lt;br /&gt;
[[File:Cachesvg.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bis hierher war alles standard fhem, das sollte also funktionieren bevor es zum schwierigen Teil kommt&amp;amp;#160;;-)&#039;&#039;&#039;&lt;br /&gt;
Wir brauchen ein Verzeichnis, um die Grafiken zu speichern, wo FHEM sie nachher auch wieder finden kann und darf:&lt;br /&gt;
In diesem Beispiel (telnet/SSH auf Raspberry PI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo mkdir /opt/fhem/svgcache/&lt;br /&gt;
sudo chown -R fhem:root /opt/fhem/svgcache/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
== erster Test ==&lt;br /&gt;
Ein erster Test (von der telnet/SSH commandline):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/svgcache/&lt;br /&gt;
sudo -u fhem wget -O testx.svg &#039;http://localhost:8083/fhem?cmd=showlog AussenTempHum_current_day myDbLog TempHum_MH -&amp;amp;amp;pos=zoom=month;off=0&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Die wesentlichen Parameter sind: &lt;br /&gt;
 sudo -u fhem   - damit läuft das wget unter dem user &#039;fhem&#039;, damit es keine Probleme mit Dateiberechtigungen gibt. &lt;br /&gt;
 -O testx.svg - das ist der filename, unter dem die erstellte svg gespeichert wird.&lt;br /&gt;
 [http://localhost:8083 http://localhost:8083]     - muß jeweils angepasst werden....&lt;br /&gt;
 &amp;amp;amp;pos=zoom=xxx;off=yyy&lt;br /&gt;
  xxx: year, month, week, day - die Zeitspanne&lt;br /&gt;
  yyy: 0, -1, -2, ...     - wieviel Zeitspannen zurück, 0==aktuell&lt;br /&gt;
Beipiel: &amp;amp;amp;pos=zoom=month;off=-1 - ergibt die Grafik des vorigen Monats.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und das Ergebnis bewundern (im Browser):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://localhost:8083/fhem/svgcache/testx.svg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es sollte jetzt die gewünschte Grafik aufgebaut werden. &lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
Automatisieren der Grafikerstellung mittels fhem at....&lt;br /&gt;
&lt;br /&gt;
== Die gespeicherten SVG&#039;s von FHEM anzeigen lassen ==&lt;br /&gt;
=== Definitionen: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_lastmonth weblink htmlCode &amp;amp;lt;br/&amp;amp;gt;&amp;amp;lt;object data=&amp;amp;quot;/fhem/svgcache/AussenTempHum_month-last.svg&amp;amp;quot; type=&amp;amp;quot;image/svg+xml&amp;amp;quot; width=&amp;amp;quot;800&amp;amp;quot; height=&amp;amp;quot;160&amp;amp;quot; name=&amp;amp;quot;weblink_test&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt; &amp;amp;lt;br/&amp;amp;gt; &amp;amp;lt;a href=&amp;amp;quot;/fhem?detail=AussenTempHum_lastmonth&amp;amp;quot;&amp;amp;gt;AussenTempHum last month&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit teilen wir fhem mit, wo die Grafik zu finden ist (object data=&amp;quot;&#039;&#039;&#039;/fhem/svgcache/Au...&#039;&#039;&#039;).&lt;br /&gt;
Der file-name muß natürlich mit dem aus dem vorigen wget übereinstimmen!&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Damit können beliebige plots definert und gepeichert werden und von fhem relativ schnell abgerufen werden.&lt;br /&gt;
Grundsätzlich wäre diese Lösung auch ohne DbLog möglich, allerdings müssten dazu die Beispiele überarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Have fun&lt;br /&gt;
Erwin.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3271</id>
		<title>Creating Plots - caching SVG&#039;s</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Creating_Plots_-_caching_SVG%27s&amp;diff=3271"/>
		<updated>2013-10-29T13:51:31Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Voraussetzungen: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating Plots - caching SVG&#039;s =&lt;br /&gt;
== Das Problem: ==&lt;br /&gt;
Die Anzeige von Grafiken in FHEM benötigt relativ lange Zeit. Speziell, wenn es um längere Zeiträume (Monat/Jahr) geht, und viele Werte gespeichert sind, kann das schon in die 10+ Sekunden gehen.&lt;br /&gt;
&lt;br /&gt;
Die Anleitung geht davon aus, dass grundsätzliches knowhow über fhem und wie Grafiken erstellt werden besteht. Grundlegende Infos sich unter: [http://www.fhemwiki.de/wiki/Creating_Plots Creating_Plots] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Der Lösungsansatz: ==&lt;br /&gt;
Alle Grafiken, die sich auf Werte in der Vergangenheit beziehen, ändern sich nicht mehr, werden aber dennoch jedesmal neu abgefragt und neu berechnet.&lt;br /&gt;
Für diese Art von Grafiken wird eine caching Lösung aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
dieses Beispiel geht von folgendener Situation aus:&lt;br /&gt;
&lt;br /&gt;
* es gibt ein DbLog (in diesem Beispiel myDbLog), dass alle readings speichert.&lt;br /&gt;
* es gibt einen Sensor (in diesem Beispiel &#039;&#039;&#039;AussenTempHum&#039;&#039;&#039;), der die readings &#039;&#039;&#039;temperature&#039;&#039;&#039; und &#039;&#039;&#039;humidity&#039;&#039;&#039; liefert.&lt;br /&gt;
* Das Beispiel geht davon aus, dass FHEM unter dem User fhem läuft.&lt;br /&gt;
&lt;br /&gt;
== Definitionen: ==&lt;br /&gt;
=== Definition eines weblinks: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_current_day weblink dbplot myDbLog:TempHum_MH&lt;br /&gt;
attr AussenTempHum_current_day label &amp;amp;quot;Temp- min: $data{min1}, max: $data{max1}, last: $data{currval1}, Feuchte- min: $data{min2}, max: $data{max2}, last: $data{currval2}&amp;amp;quot;&lt;br /&gt;
attr AussenTempHum_current_day plotfunction AussenTempHum&lt;br /&gt;
attr AussenTempHum_current_day title &amp;amp;quot;Aussen&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;plotfunktion&#039;&#039;&#039;bestimmt welches device in der Datenbank selektiert wird (in diesem Beispiel AussenTempHum).&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;&#039;title&#039;&#039;&#039;und &#039;&#039;&#039;label&#039;&#039;&#039;bestimmt was in der Überschriftszeile des Plots steht.&lt;br /&gt;
&lt;br /&gt;
=== Definition des gplotfile (TempHum_MH.gplot): ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# TempHum_MH.gplot&lt;br /&gt;
# MH 12/2012 support both dblog and filelog&lt;br /&gt;
# Attribute &#039;small&#039; is useful for gnuplot/-scroll only,&lt;br /&gt;
# if plotsize is less than 800,400&lt;br /&gt;
#set terminal png transparent small size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set ytics nomirror&lt;br /&gt;
set y2tics&lt;br /&gt;
#set ytics&lt;br /&gt;
set title &#039;&amp;amp;lt;TL&amp;amp;gt; &amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;amp;quot;Temperature (°C)&amp;amp;quot;&lt;br /&gt;
set ylabel &amp;amp;quot;Humidity (%RF)&amp;amp;quot;&lt;br /&gt;
set yrange [0:99]&lt;br /&gt;
#FileLog 4:temperature:10:&lt;br /&gt;
#FileLog 4:humidity:50:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:temperature:10:&lt;br /&gt;
#DbLog &amp;amp;lt;SPEC1&amp;amp;gt;:humidity:50:&lt;br /&gt;
plot \&lt;br /&gt;
 ls l0 axes x1y2 title &#039;Measured temperature&#039; with lines&lt;br /&gt;
 ls l1fill axes x1y1 title &#039;Humidity&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nachdem diese beiden Definitionen erledigt sind, sollte es in FHEM eine Grafik geben, die in etwa so aussieht:&lt;br /&gt;
&lt;br /&gt;
[[File:Cachesvg.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bis hierher war alles standard fhem, das sollte also funktionieren bevor es zum schwierigen Teil kommt&amp;amp;#160;;-)&#039;&#039;&#039;&lt;br /&gt;
Wir brauchen ein Verzeichnis, um die Grafiken zu speichern, wo FHEM sie nachher auch wieder finden kann und darf:&lt;br /&gt;
In diesem Beispiel (telnet/SSH auf Raspberry PI):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo mkdir /opt/fhem/svgcache/&lt;br /&gt;
sudo chown -R fhem:root /opt/fhem/svgcache/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
== erster Test ==&lt;br /&gt;
Ein erster Test (von der telnet/SSH commandline):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/svgcache/&lt;br /&gt;
sudo -u fhem wget -O testx.svg &#039;http://localhost:8083/fhem?cmd=showlog AussenTempHum_current_day myDbLog TempHum_MH -&amp;amp;amp;pos=zoom=month;off=0&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Die wesentlichen Parameter sind: &lt;br /&gt;
 sudo -u fhem   - damit läuft das wget unter dem user &#039;fhem&#039;, damit es keine Probleme mit Dateiberechtigungen gibt. &lt;br /&gt;
 -O testx.svg - das ist der filename, unter dem die erstellte svg gespeichert wird.&lt;br /&gt;
 [http://localhost:8083 http://localhost:8083]     - muß jeweils angepasst werden....&lt;br /&gt;
 &amp;amp;amp;pos=zoom=xxx;off=yyy&lt;br /&gt;
  xxx: year, month, week, day - die Zeitspanne&lt;br /&gt;
  yyy: 0, -1, -2, ...     - wieviel Zeitspannen zurück, 0==aktuell&lt;br /&gt;
Beipiel: &amp;amp;amp;pos=zoom=month;off=-1 - ergibt die Grafik des vorigen Monats.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und das Ergebnis bewundern (im Browser):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://localhost:8083/fhem/svgcache/testx.svg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es sollte jetzt die gewünschte Grafik aufgebaut werden. &lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
Automatisieren der Grafikerstellung mittels fhem at....&lt;br /&gt;
&lt;br /&gt;
== Die gespeicherten SVG&#039;s von FHEM anzeigen lassen ==&lt;br /&gt;
=== Definitionen: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define AussenTempHum_lastmonth weblink htmlCode &amp;amp;lt;br/&amp;amp;gt;&amp;amp;lt;object data=&amp;amp;quot;/fhem/svgcache/AussenTempHum_month-last.svg&amp;amp;quot; type=&amp;amp;quot;image/svg+xml&amp;amp;quot; width=&amp;amp;quot;800&amp;amp;quot; height=&amp;amp;quot;160&amp;amp;quot; name=&amp;amp;quot;weblink_test&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt; &amp;amp;lt;br/&amp;amp;gt; &amp;amp;lt;a href=&amp;amp;quot;/fhem?detail=AussenTempHum_lastmonth&amp;amp;quot;&amp;amp;gt;AussenTempHum last month&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit teilen wir fhem mit, wo die Grafik zu finden ist (object data=&amp;quot;&#039;&#039;&#039;/fhem/svgcache/Au...&#039;&#039;&#039;).&lt;br /&gt;
Der file-name muß natürlich mit dem aus dem vorigen wget übereinstimmen!&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Damit können beliebige plots definert und gepeichert werden und von fhem relativ schnell abgerufen werden.&lt;br /&gt;
Grundsätzlich wäre diese Lösung auch ohne DbLog möglich, allerdings müssten dazu die Beispiele überarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Have fun&lt;br /&gt;
Erwin.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_und_FritzBox_7240&amp;diff=3227</id>
		<title>FHEM und FritzBox 7240</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_und_FritzBox_7240&amp;diff=3227"/>
		<updated>2013-10-26T11:09:43Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Fritz!Box 7240 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions and recommendations for running &#039;&#039;&#039;Fhem on a FritzBox 7240&#039;&#039;&#039;.&lt;br /&gt;
== CUL ==&lt;br /&gt;
* flash CUL_V3.hex (from [http://www.atmel.com/ Atmel] page)&lt;br /&gt;
* attach CUL to Fritz!Box (with a USB Hub to have USB-Memory stick and CUL running at the same time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: to check if CUL works, in FritzBox settings enable &#039;&#039;USB-Fernanschluss&#039;&#039;. &lt;br /&gt;
Now it gets recognized as CUL868. Remember to disable it again. &lt;br /&gt;
The CUL should be recognized as &amp;lt;code&amp;gt;Es handelt sich um ein nicht unterstütztes USB-Gerät&amp;lt;/code&amp;gt;. This is OK!&lt;br /&gt;
&lt;br /&gt;
== Fritz!Box 7240 ==&lt;br /&gt;
* Update Fritz!Box to Firmware-Version &amp;amp;gt;= 73.05.05&lt;br /&gt;
* download [http://www.fhem.de Fhem]&lt;br /&gt;
* unzip and store at root of your USB-Memory stick in the folder &amp;quot;fhem&amp;quot; (this will be &amp;lt;code&amp;gt;/var/InternerSpeicher/&amp;amp;lt;yourUsbStickName&amp;amp;gt;/fhem/&amp;lt;/code&amp;gt; on you Fritz!Box lateron.&lt;br /&gt;
* in this folder, adapt the file &amp;quot;startfhem&amp;quot; if you use more than one storage device (e.g. USB memory stick and 1&amp;amp;amp;1 Online Speicher&amp;quot;) with hardcoded destination folder for your fhem path:&lt;br /&gt;
*: &amp;lt;code&amp;gt;home=/var/InternerSpeicher/SanDisk-Cruzer-01/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
* Alternatively, disable &amp;quot;1&amp;amp;amp;1 Online Speicher&amp;quot; and use USB memory stick only. This way you don&#039;t have to adapt startfhem.&lt;br /&gt;
* to use telnet, it needs to be enabled via phone by dialing #96*7*. To login, use the same password as for Fritz!Box webfrontend. Now you can edit all of your files using vi in telnet.&lt;br /&gt;
* Now define your &amp;quot;fhem.cfg&amp;quot; to match your configuration, e.g. starting with your housecode:&lt;br /&gt;
*: &amp;lt;code&amp;gt; define myCUL CUL /dev/ttyACM0 1234 &amp;lt;/code&amp;gt;&lt;br /&gt;
*: ...&lt;br /&gt;
* finally start fhem in telnet:&lt;br /&gt;
*: &amp;lt;code&amp;gt;/var/InternerSpeicher/SanDisk-Cruzer-01/fhem/startfhem&amp;lt;/code&amp;gt;&lt;br /&gt;
* or use autostart =&amp;amp;gt; see [http://www.fhemwiki.de/wiki/FHEM_und_FritzBox_7170#Autostart_fhem #Autostart fhem]&lt;br /&gt;
&lt;br /&gt;
== Open issues ==&lt;br /&gt;
Daily resets with big log files&lt;br /&gt;
&lt;br /&gt;
After 1 week running perfectly I was seeing regular/daily resets. The problem in my setting is that I am using several [[FS20 STR Raumthermostat|FS20-STR]]. These devices send every 2-3 minutes off-for-timer or on-for-timers signals. These events get logged in the monthly log file. After this log was bigger then 1MB I have seen these resets. After I emptied/deleted the file the box is running stable again. &lt;br /&gt;
&amp;lt;!-- [[Benutzer:Madu99]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After looking into the details, it seems that the 7240 gets a memory problem when log files get bigger than ~800KB. I changed the logging from monthly files to weekly files (using &amp;lt;code&amp;gt;./log/fhem-%Y-%m-%V.log&amp;lt;/code&amp;gt;). This way, files should no longer get that big. Since then, 7240 runs stable without any problems.&lt;br /&gt;
&amp;lt;!-- [[Benutzer:Madu99]] 01:44, 29. Dez. 2011 (CET) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [http://groups.google.com/group/fhem-users/browse_thread/thread/8acca4c2a63e1dce GoogleGroups:FHEM auf Fritzbox - Logfile - Info wenn wenig Speicher]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FritzBox]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zuhause-Status&amp;diff=3073</id>
		<title>Zuhause-Status</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zuhause-Status&amp;diff=3073"/>
		<updated>2013-10-10T10:05:21Z</updated>

		<summary type="html">&lt;p&gt;Generix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abhängig davon, ob man sich zuhause aufhält, schläft oder ausser Haus ist, sollen Geräte unterschiedlich geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Dabei sollen&lt;br /&gt;
&lt;br /&gt;
# beim Statuswechsel (also &amp;quot;ich komme nach hause&amp;quot;, &amp;quot;ich gehe schlafen&amp;quot; etc) Geräte geschaltet werden&lt;br /&gt;
# regelmäßig geplante &amp;quot;at *&amp;quot; -Vorgänge ihr Verhalten auch davon abhängig machen, ob jemand zuhause ist oder nicht.&lt;br /&gt;
&lt;br /&gt;
Der Status kann z. B. per Schalter gesetzt werden.&lt;br /&gt;
Automatisiert geht das auch mit dem [[PRESENCE]] Modul&lt;br /&gt;
&lt;br /&gt;
== Lösungsansatz ==&lt;br /&gt;
Es wird eine Variable HomeStatus als dummy-device, also als Variable definiert.&lt;br /&gt;
&lt;br /&gt;
Desweiteren werden ein 4-Tasten-Wandschalter fs20-s4a und eine 4-Tasten-Fernbedienung fs20-s4 mit identischem Hauscode und Tastencodes versehen, die Tasten angelernt und benannt in HomeStat1, HomeStat2, HomeStat3, HomeStat4.&lt;br /&gt;
Der Wandschalter kommt neben die Wohnungstür, die Fernbedienung ans Bett.&lt;br /&gt;
&lt;br /&gt;
Beim Drücken dieser Tasten wird HomeStatus auf 1, 2, 3 oder 4 gesetzt. Ausserdem werden die gemäß dem neuen Status benötigten bzw. nicht mehr benötigten Geräte ein- oder ausgeschaltet:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Bei Setzen von HomeStatus 1 (ich komme zuhause an)&lt;br /&gt;
: Media an&lt;br /&gt;
: Heizung auf Tagtemperatur&lt;br /&gt;
: WLAN an&lt;br /&gt;
&lt;br /&gt;
;Bei Setzen von HomeStatus 2 (ich gehe schlafen)&lt;br /&gt;
: Alle Lampen aus ausser Schlafzimmer&lt;br /&gt;
: Media aus&lt;br /&gt;
: Heizung auf Nachttemperatur&lt;br /&gt;
: WLAN aus&lt;br /&gt;
&lt;br /&gt;
;Bei Setzen von HomeStatus 3 (verlassen der Wohnung für kurze Zeit)&lt;br /&gt;
: Alle Lampen aus&lt;br /&gt;
: Media aus&lt;br /&gt;
: Heizung auf Nachttemperatur&lt;br /&gt;
: WLAN aus&lt;br /&gt;
&lt;br /&gt;
;Bei Setzen von HomeStatus 4 (ich verlasse die Wohnung für längere Zeit)&lt;br /&gt;
: Alles aus&lt;br /&gt;
: Heizung runterregeln auf &#039;Ferienprogramm&#039;&lt;br /&gt;
: WLAN aus &lt;br /&gt;
&lt;br /&gt;
Regelmäßig geschaltete Geräte berücksichtigen ebenfalls den HomeStatus, z.B. startet das Wakeuplight nur an Wochentagen und nur wenn ich zuhause bin, also der HomeStatus &amp;amp;lt; 3 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HomeStatus dummy&lt;br /&gt;
attr HomeStatus room Wohnung&lt;br /&gt;
define whg_HomeStat1 FS20 696c 00&lt;br /&gt;
define whg_HomeStat2 FS20 696c 01&lt;br /&gt;
define whg_HomeStat3 FS20 696c 02&lt;br /&gt;
define whg_HomeStat4 FS20 696c 03&lt;br /&gt;
&lt;br /&gt;
define Zuhause notify whg_HomeStat1 set HomeStatus 1;;trigger whg_Audio on;;set whg_WLAN,wz_MacMini on;;set ez_FHT desired-temp 21.0&lt;br /&gt;
define Schlafen notify whg_HomeStat2 set HomeStatus 2;;trigger whg_MediaAus off;;set ez_FHT desired-temp 19.0;;set ez_LichtAlle,wz_LichtAlle,ku_LichtAlle,whg_WLAN off&lt;br /&gt;
define KurzWeg notify whg_HomeStat3 set HomeStatus 3;;set ez_FHT desired-temp 18.5;;trigger whg_MediaAus off;;set whg_WLAN,Wohnung_Licht off&lt;br /&gt;
define LangeWeg notify whg_HomeStat4 set HomeStatus 4;;trigger whg_MediaAus off;;set Wohnung_Licht,whg_WLAN,wz_MacMini off;;set ez_FHT desired-temp 17.0&lt;br /&gt;
&lt;br /&gt;
define wakeup at *07:00 {\&lt;br /&gt;
 {Log 3, (&#039;wakeupLOG WE:     &#039;.$we)}\&lt;br /&gt;
 {Log 3, (&#039;wakeupLOG HomeStatus: &#039;.(Value(&amp;quot;HomeStatus&amp;quot;)))}\&lt;br /&gt;
 if ((!$we) &#039;&#039;&#039;and (Value(&amp;quot;HomeStatus&amp;quot;) &amp;amp;lt; 3&#039;&#039;&#039;) {\&lt;br /&gt;
   {fhem(&amp;quot;define wakeup2 at +00:18:00 set sz_Stehlampe on&amp;quot;) }\&lt;br /&gt;
   {fhem(&amp;quot;define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off&amp;quot;) }\&lt;br /&gt;
   {fhem(&amp;quot;set sz_Leselampe dim100% 1280&amp;quot;) }\&lt;br /&gt;
   {Log 4, (&amp;quot;wakeupLOG: define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off&amp;quot;)}\&lt;br /&gt;
 }\&lt;br /&gt;
 else {\&lt;br /&gt;
 {Log 3, (&amp;quot;wakeupLOG: no wakeup today.&amp;quot;)}\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weitere Beispiele ==&lt;br /&gt;
[[Wakeuplight]]&lt;br /&gt;
[[Licht bei Bedingungen einschalten]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Alarmanlage&amp;diff=3072</id>
		<title>Alarmanlage</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Alarmanlage&amp;diff=3072"/>
		<updated>2013-10-10T09:46:10Z</updated>

		<summary type="html">&lt;p&gt;Generix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit FS20 und/oder HM Komponenten lassen sich auch Alarmanlagen realisieren. Im Folgenden soll eine einfache Alarmanlage beschrieben werden. Die Beschreibung ist an manchen Stellen noch unvollständig und außerdem an konkrete Begebenheiten angepasst. Sie soll daher nur als Anregung dienen, ferner werden einige typische Probleme diskutiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anforderung ==&lt;br /&gt;
Die Alarmanlage soll mittels Taster im Innenraum und Fernbedienungen scharf und unscharf gestellt werden können. Die Scharfschaltung soll verzögert erfolgen. Der Zustand der Anlage soll auf dem Webinterface aber auch auf einer im Haus zu montierenden Anzeige sichtbar sein. Die Auslösung soll beim Verletzen der Aussenhaut und bei Bewegung im Innenraum erfolgen. Es soll im Moment der Auslösung grob angezeigt werden, in welchem Bereich ausgelöst wurde.&lt;br /&gt;
&lt;br /&gt;
== Vorausetzung ==&lt;br /&gt;
Voraussetzung sind Sensoren. Vielfach sind aber Bewegungsmelder und Türkontakte vorhanden, unter Umständen muss nur wenig ergänzt werden. Im konkreten Fall konnte auf mehrere [[FS20 PIRA Infrarot-Bewegungsmelder]] installiert.&lt;br /&gt;
&lt;br /&gt;
== Design / Anzeige / Schaltlogik ==&lt;br /&gt;
Der Zustand der Anlage muss angezeigt werden. Dies kann zum Teil über einen Raum &amp;quot;Alarmanlage&amp;quot; geschehen, den man per WebGUI ansehen kann, denkbar ist aber auch eine Hardwareanzeige. Im konkreten Fall wurde ein [[FS20 SM8 8-Kanal-Schaltmodul]] realisiert. Dessen Ausgänge kann direkt bis zu 12 Volt 1 Ampere schalten, was für Leuchtdioden und sogar 12 Volt Sirenen ausreicht. Wichtig ist vor allem, dass von außen zu sehen ist, dass die Anlage scharf ist. Hierzu kann im Bereich der Eingangstür eine Leuchtdiode angebracht werden, die durch einen Kanal des FS20SM8 angesteuert wird. Es empfiehlt sich eine blinkende LED zu verwenden, da Blinken über Fhem/FS20 kaum realisierbar ist.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss die Anlage ein und auschaltbar sein, oder besser: scharf und unscharf.&lt;br /&gt;
Ferner soll zwischen &amp;quot;scharf&amp;quot; und nur &amp;quot;scharf intern&amp;quot; unterschieden werden. Scharf intern soll dabei nur die Aussenhautsensoren überwachen (Türen, Fenster) nicht jedoch Innenraumsensoren (Bewegungsmelder, Taster)&lt;br /&gt;
&lt;br /&gt;
Scharf intern wird also eingeschaltet, wenn sich Bewohner im Gebäude aufhalten eine Grundsicherung aber dennoch erfolgen soll, typischerweise also nachts. Ebenso ist die interne Scharfschaltung sinnvoll, wenn z.B. Hunde alleine im Haus zurückbleiben, die sonst eventuell die Bewegungsmelder auslösen würden.&lt;br /&gt;
&lt;br /&gt;
Das Einschalten soll zwar per Fernbedienung passieren, zusätzlich aber über im Haus verdeckt angebrachte Taster. &lt;br /&gt;
Die im Haus angebrachten Taster ermöglichen Scharf- und auch Unscharfschalten ohne Eingabe weiterer Berechtigungen, d.h. es ist derzeit kein Codeschloss oder dergleichen realisiert. Die Sicherheit ergibt sich auschliesslich dadurch, dass die Taster getarnt und als solche nicht erkennbar sind. Hierzu wurden nicht als Taster erkennbare Mechanismen mit einem [[FS20 S4M 2-/4-Kanal-Sendemodul|FS20 S4M]] verbunden, das als Sender dient.&lt;br /&gt;
&lt;br /&gt;
Um Fehlbedienungen zu erschweren sind Wartezeiten eingebaut: Nach der letzten Unscharfschaltung müssen 11 Sekunden vergehen, bis wieder scharf geschaltet werden kann. &lt;br /&gt;
&lt;br /&gt;
Die Scharfschaltung muss außerdem verzögert erfolgen, damit man bereits im Inneren des Hauses scharf schalten kann aber noch genug Zeit hat das Haus zu verlassen. Hier ist eine Minute ausreichend.&lt;br /&gt;
&lt;br /&gt;
Um diese diversen Zustände zu steuern, werden mehre Variablen (dummys) und FS20 Aktoren eingerichtet, nämlich:&lt;br /&gt;
&lt;br /&gt;
* ANLAGE_STATUS&lt;br /&gt;
* ALARM_STATUS&lt;br /&gt;
* ANLAGE_SCHARF&lt;br /&gt;
* ALARM_AKTOR&lt;br /&gt;
&lt;br /&gt;
Zur Anzeige außerdem:&lt;br /&gt;
&lt;br /&gt;
* Scharfanzeige1&lt;br /&gt;
* Scharfanzeige2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANLAGE_STATUS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein reiner Dummy, der folgende Werte annehmen kann&lt;br /&gt;
&lt;br /&gt;
* aus (Anlage initialisiert, ohne weitere Funktion)&lt;br /&gt;
* 60sec (Anlage wurde scharf geschaltet, ein Minute Wartezeit bis Aktivierung)&lt;br /&gt;
* scharf (Anlage ist scharf)&lt;br /&gt;
* scharf_intern (Anlage ist intern scharf, es werden nurAussenhautsensoren überwacht)&lt;br /&gt;
* warten (Anlage wurde unscharf geschaltet, kann aber die nächsten 11 Sekunden noch nicht erneut scharf geschaltet werden.&lt;br /&gt;
* unscharf (Anlage ist unscharf)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ALARM_STATUS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein reiner Dummy, der folgende Werte annehmen kann&lt;br /&gt;
&lt;br /&gt;
* aus (Anlage initialisiert, ohne weitere Funktion)&lt;br /&gt;
* bereit (Anlage scharf, keine Alarmauslösung)&lt;br /&gt;
* ALARM (Anlage scharf, Alarmauslösung)&lt;br /&gt;
* unscharf (Anlage unscharf)&lt;br /&gt;
* IRausgeloest (Anlage ist scharf, Alarmauslösung durch Bewegungsmelder, letzte Bewegung vor mindestens 3 Minuten)&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die Satus ANLAGEN_STATUS und ALARM_STATUS in einer Variabel zusammen zu fassen, was die Sache aber unübersichtlich macht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANLAGE_SCHARF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein FS20 Schalter, der dazu da ist, die Alarmanlage mit den Tastern im Haus, einer Fernbedienung oder ggf. über die Webseite zu schalten. ON soll die Anlage scharf schalten, OFF unscharf. &lt;br /&gt;
Ferner kann überlegt werden, auch versehentlich zu lange Tastendrücke (dimup und dimdown) abzufangen und zum Schalten zuzulassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANLAGE_SCHARF_intern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein FS20 Schalter, der dazu da ist, die Alarmanlage mit den Tastern im Haus, einer Fernbedienung oder ggf. über die Webseite zu schalten. ON soll die Anlage scharf_intern schalten, OFF unscharf. &lt;br /&gt;
Ferner kann überlegt werden, auch versehentlich zu lange Tastendrücke (dimup und dimdown) abzufangen und zum Schalten zuzulassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ALARM_AKTOR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein FS20 Aktor, der dazu dient die Sirenensteuerung zu triggern.&lt;br /&gt;
Die Signalisierung bei Alarm ist 2-stufig aufgebaut. ALARM_STATUS löst im Inneren des Hauses direkt eine Alarmanzeige (LED und/oder interne Sirene aus).&lt;br /&gt;
Äussere Signaleinrichtungen unterliegen aber gesetzlichen Regelungen was die Länge der Alarmierung betrifft und werden daher durch eine eigene Logik bzw. einen eigene Aktor betrieben: ALARM_AKTOR &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zur Anzeige ausserdem:&lt;br /&gt;
&lt;br /&gt;
Scharfanzeige1&lt;br /&gt;
&lt;br /&gt;
Scharfanzeige2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FS20 Aktoren, die mittels LED den Zustand der Anlage zeigen:&lt;br /&gt;
&lt;br /&gt;
* Scharfanzeige1 leuchtet, wenn die Anlage scharf geschaltet wurde (nur intern oder komplett) und auch, wenn die Anlage zwar scharf geschaltet wurde, aber die eine Minute Wartezeit noch nicht um ist. Sie dient als sofortiges Feedback, dass die Einschaltung erfolgreich war. Wird die Anlage unscharf geschaltet, leuchtet Scharfanzeige1 noch so lange wie die Anlage im Status „warten“ ist, also nicht erneut scharf geschaltet werden kann.&lt;br /&gt;
* Scharfanzeige2 hingegen leuchtet nur, wenn der Anlagenstatus „scharf“ ist (nur intern oder komplett), also 1 Minute nach dem Einschalten. Hier kann z.b. eine zweite LED im Aussenbereich angebracht werden, die von außen sichtbar anzeigt, dass die Anlage scharf ist. Scharfanzeige2 geht sofort aus, wenn die Anlage unscharf geschaltet wird, sodass von außen kontrollierbar ist, ob die Anlage erfolgreich unscharf gestellt wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit zwei LEDs (oder ähnlichen Aktoren) können also Zustände der Anlage (ausser dem eigentlichen Alarm) angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
Nach einschalten:&lt;br /&gt;
&lt;br /&gt;
 Scharfanzeige1	 Scharfanzeige2	 	Status der Anlage&lt;br /&gt;
 aus	 		aus			unscharf			&lt;br /&gt;
 an	 		aus			eingeschaltet, 1 Minute Wartezeit&lt;br /&gt;
 an	 		an			scharf&lt;br /&gt;
&lt;br /&gt;
Durch weitere Anzeigen ließe sich zwischen scharf und scharf_intern unterscheiden. Speziell von aussen betrachtet bringt dies aber wenig Erkenntnisgewinn, da ein versehentliches Öffnen der Tür in beiden Fällen Alarm auslösen würde.&lt;br /&gt;
&lt;br /&gt;
Nach ausschalten:&lt;br /&gt;
&lt;br /&gt;
 Scharfanzeige1	 Scharfanzeige2	 		Status der Anlage&lt;br /&gt;
 an	 		aus			unscharf, noch warten			&lt;br /&gt;
 aus	 		aus			unscharf, einschaltbar&lt;br /&gt;
&lt;br /&gt;
== Praktische Probleme ==&lt;br /&gt;
=== Grenzen ===&lt;br /&gt;
Die Alarmanlage ist insgesamt nur so sicher wie die verwendeten Komponenten. Die hier eingesetzten FS20 Sensoren und Sender sind funktechnisch nicht sicher und könnten von Dritten, die über geeignetes Equipment, Know How und etwas Zeit verfügen analysiert und dann bedient werden. Sie dient nur der Grundsicherung gegen &amp;quot;durchschnittlich begabte&amp;quot; Einbrecher. Sie ist besser als nichts, weil man wohl davon ausgehen kann, dass normale Einbrecher nicht über das notwendige Wissen verfügen, überdies würde der zeitliche Aufwand das Objekt eventuell weniger lohnend erscheinen lassen.&lt;br /&gt;
Es ist aber definitiv möglich, die Anlage mit einer FHEM Installation auf einem Laptop inclusive z.B. einem CUL abzuschalten, wenn die nötige Kenntnisse vorliegen.&lt;br /&gt;
Mit HomeMatic Komponenten kann höhere Sicherheit erreicht werden, insbesondere wenn der AES Signing Request mit eigenem Schlüssel verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== Abstraktionlayer ===&lt;br /&gt;
Wenn die Haussteuerung vor dem „Bau“ der Alarmanlage bereits besteht und wenn verschiedene Sensortypen eingesetzt werden, so sind die Namen der Sensoren vermutlich nicht nach den Bedürfnissen der Alarmanlage strukturiert benannt.&lt;br /&gt;
Ausserdem liefern z.b. FHT Türsensoren andere Ergebnisse als FS20 und HM Türsensoren:&lt;br /&gt;
&lt;br /&gt;
* FHT80TF -&amp;amp;gt; Open / Closed&lt;br /&gt;
* HM-SEC-SC -&amp;amp;gt; open / closed&lt;br /&gt;
* FS 20 TFK -&amp;amp;gt; on / off&lt;br /&gt;
&lt;br /&gt;
Dadurch ist eine einfache Abfrage, ob eine Tür oder ein Fenster offen ist nicht möglich, vielmehr müssten alle Kontakte einzeln per notify behandelt werden.&lt;br /&gt;
&lt;br /&gt;
Ausserdem:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; Die [[FHT80TF]] werden diese notifys nämlich alle 2 Minuten ausgelöst. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* PIRA/PIRIs sind meist so konfiguriert, dass sie zwar bei Bewegung ein Event senden (etwa um Licht einzuschalten) aber kein Event, wenn keine Bewegung (für eine bestimmte Zeit) erkannt wurde. Dies muss berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht nachträglich alle Sensoren umbennen zu müssen und um die Zustände zu vereinheitlichen, wurde eine Abstraktionschicht eingeführt. Dazu werden alle Sensoren einer Meldegruppe bzw Funktionsgruppe als Dummy mit strukturierten Namen neu angelegt und deren Zustand über notifys der eigentlichen Sensoren ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Durch die Alarmanlage werden nur Events der Dummies abgefragt.&lt;br /&gt;
&lt;br /&gt;
Dieses Vorgehen hat folgende Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Vereinheitlichung der Namen&lt;br /&gt;
* Vereinheitlichung der Zustände.&lt;br /&gt;
* zusätzliche Logik in den Notifies der Dummys, z.b. Rücksetzen der Bewegungsmelder, Verzögerungen&lt;br /&gt;
* Anzeige aller Sensoren in einem Raum („Alarmanlage“) ohne weitere Strukture-Konstrukte und unabhängig vom eigentlichen Sensor.&lt;br /&gt;
* Manipulation der Dummysensoren ohne dass ausserhalb der Alarmanlage Aktionen ausgelöst werden . (Es kann z.b. zu Testzwecken eine Bewegungsmelder auf ON gesetzt werden, ohne das die normalerweise ausgelöste Lichtschaltung erfolgt)&lt;br /&gt;
=== Funklast ===&lt;br /&gt;
Im Betrieb kann im Moment von Zustandsänderungen einiges an Funklast erzeugt werden. Die konkreten Installation wird mit einem [[HMLAN Konfigurator]] betrieben. Die Zustandsanzeige der Alarmanlage ist von beiden CULs mit vernünftigem RSSI erreichbar und daher konnten die Anzeigen auf die CULs per IOdev verteilt werden, um die Funklast zu senken.&lt;br /&gt;
&lt;br /&gt;
Dabei wurden die kritischen Signalisierungen (Scharfanzeige und Alarm) von den eher sekundären Anzeigen (Meldegruppen) getrennt, die aufgrund häufiger Statusänderungen oft ausgelöst werden. Die Auslösung des Alarmaktors (Sirene) wird über HM geroutet.&lt;br /&gt;
&lt;br /&gt;
== Kommentierter Code ==&lt;br /&gt;
(Gegenwärtig sind Definitionen und zugehörige Funktionen zusammengefasst, eleganter ist es vermutlich, alle für die Anlage notwendigen Definitionen zusammen zu fassen)&lt;br /&gt;
&lt;br /&gt;
Im Code enthalten Zeilumbrüche sind vor Übernahme in eine eigene Konfiguration zu entfernen.&lt;br /&gt;
&lt;br /&gt;
=== Einschalten / auschalten ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#-----Scharf/unscharf--------------------------------&lt;br /&gt;
define ANLAGE_STATUS dummy&lt;br /&gt;
attr ANLAGE_STATUS room Alarmanlage&lt;br /&gt;
define ANLAGE_SCHARF FS20 22224222 32&lt;br /&gt;
attr ANLAGE_SCHARF dummy 1&lt;br /&gt;
attr ANLAGE_SCHARF room Alarmanlage&lt;br /&gt;
define ANLAGE_SCHARF_intern FS20 22224222 30&lt;br /&gt;
attr ANLAGE_SCHARF_intern dummy 1&lt;br /&gt;
attr ANLAGE_SCHARF_intern room Alarmanlage&lt;br /&gt;
define Scharfanzeige1 FS20 22224222 01&lt;br /&gt;
attr Scharfanzeige1 IODev CUL1&lt;br /&gt;
define Scharfanzeige2 FS20 22224222 02&lt;br /&gt;
attr Scharfanzeige2 IODev CUL1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Über diese Dummies und Aktoren wird die Anlage gesteuert. Die Anlage wurde mit einem von der sonstigen Installation abweichendem Hauscode versehen, als Beispiel 22224222&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Einschalten ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_ANLAGE_SCHARF_on notify ANLAGE_SCHARF:on { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;scharf&amp;amp;quot; &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;60sec&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;warten&amp;amp;quot; ) { fhem(&amp;amp;quot;set Scharfanzeige1 on&amp;amp;#160;;; &lt;br /&gt;
set ANLAGE_STATUS 60sec&amp;amp;#160;;; set ALARM_STATUS bereit&amp;amp;#160;;; define verzoegert_Heizung_absenken at +00:07:00 set &lt;br /&gt;
Heizung_absenken on&amp;amp;#160;;; define verzoegert_scharf at +00:01:00 set ANLAGE_STATUS scharf&amp;amp;#160;;;;; &lt;br /&gt;
set Scharfanzeige2 on&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beim Betätigen des Tasters / Fernbedienung wird die Alarmanlage eingeschaltet, wenn:&lt;br /&gt;
&lt;br /&gt;
* der Taster ON gedrückt wurde&lt;br /&gt;
* die Anlage nicht schon scharf ist (Vermeidung unnötiger Funklast)&lt;br /&gt;
* die Anlage nicht innerhalb der letzten Minute scharf geschaltet wurde&lt;br /&gt;
* die Anlage nicht innerhalb der letzten 11 Sekunden ausgeschaltet wurde.&lt;br /&gt;
&lt;br /&gt;
Das Scharfschalten löst folgende Aktionen aus:&lt;br /&gt;
&lt;br /&gt;
* die Scharfanzeige 1 wird aktiviert&lt;br /&gt;
* Der Status der Anlage wird auf „60sec“ gesetzt, um anzudeuten, das sie noch nicht scharf ist, aber in einer Minute&lt;br /&gt;
* der Alarmstatus wird auf „bereit“ gesetzt&lt;br /&gt;
* die Heizung wird in 7 Minuten auf Absenkbetrieb gesetzt „ in der Annahme, dass die Alarmanlage nur dann auf scharf gestellt wird, wenn alle das Haus verlassen haben. Die Verzögerung von 7 Minuten dient vor allem dazu, die erhebliche Funklast der Heizungsabsenkung – Brenner und alle FHTs werden verstellt - zeitlich von (auch mehrfachen) Scharfschaltungen zu entkoppeln.&lt;br /&gt;
* mittels at +00:01:00 wird die Anlage in eine Minute nach Scharfschaltung tatsächlich scharf geschaltet, gleichzeitig wird Scharfanzeige2 eingeschaltet, die eine auch im Außenbereich sichtbare Anzeige einschaltet.&lt;br /&gt;
==== Einschalten intern ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_ANLAGE_SCHARF_intern_on notify ANLAGE_SCHARF_intern:on { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;scharf_intern&amp;amp;quot; &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;60sec&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;ANLAGE_STATUS&amp;quot;) ne &amp;amp;quot;warten&amp;amp;quot; ) { fhem(&amp;amp;quot;set Scharfanzeige1 on&amp;amp;#160;;; &lt;br /&gt;
set ANLAGE_STATUS 60sec&amp;amp;#160;;; set ALARM_STATUS bereit&amp;amp;#160;;; define verzoegert_scharf at +00:01:00 set ANLAGE_STATUS scharf_intern&amp;amp;#160;;;;; set Scharfanzeige2 on&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Verhalten ist analog zur normalen Scharfschaltung. Jedoch wird die Heizung nicht abgesenkt.&lt;br /&gt;
Die Alarmanlage kann auch ohne vorheriges Auschalten von einer Scharfschaltung in die andere überführt werden. &lt;br /&gt;
Dies kann nützlich sein, wenn z.b. von aussen versehentlich nur intern scharf gestellt wurde. Es ist dann möglich direkt auf komplette Scharfschaltung zu erweitern.&lt;br /&gt;
&lt;br /&gt;
==== Ausschalten ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf_intern&amp;amp;quot; || Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set ALARM_Melder off&amp;amp;#160;;; &lt;br /&gt;
set Scharfanzeige2 off&amp;amp;#160;;; delete verzoegert_scharf&amp;amp;#160;;; set ANLAGE_STATUS warten&amp;amp;#160;;; &lt;br /&gt;
set ALARM_STATUS unscharf &amp;amp;#160;;; define Alarmanlage_aufraeumen &lt;br /&gt;
at +00:00:11 set ANLAGE_STATUS unscharf&amp;amp;#160;;;;; set Scharfanzeige1 off&amp;amp;#160;;; &lt;br /&gt;
delete verzoegert_Heizung_absenken&amp;amp;#160;;; set brenner on&amp;amp;#160;;; set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off&amp;amp;quot;) } &lt;br /&gt;
else { fhem(&amp;amp;quot;set ALARM_Melder off&amp;amp;#160;;; &lt;br /&gt;
set Scharfanzeige2 off&amp;amp;#160;;; delete verzoegert_scharf&amp;amp;#160;;; set ANLAGE_STATUS warten&amp;amp;#160;;; &lt;br /&gt;
set ALARM_STATUS unscharf &amp;amp;#160;;; define Alarmanlage_aufraeumen &lt;br /&gt;
at +00:00:11 set ANLAGE_STATUS unscharf&amp;amp;#160;;;;; set Scharfanzeige1 off&amp;amp;#160;;; &lt;br /&gt;
delete verzoegert_Heizung_absenken&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beim Betätigen des Tasters / Fernbedienung wird die Alarmanlage ausgeschaltet, wenn der Taster OFF gedrückt wurde. Durch ANLAGE_SCHARF.* (also das angehängte &amp;quot;.*&amp;quot;) werden dabei beide Schalter ausgewertet, also sowohl&lt;br /&gt;
ANLAGE_SCHARF&lt;br /&gt;
als auch &lt;br /&gt;
ANLAGE_SCHARF_intern.&lt;br /&gt;
Beide Schalter schalten die Anlage bei OFF also aus, egal auf welche Art sie scharf geschaltet wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Unscharfschalten löst - sofern die Alarmanlage vorher scharf war - folgende Aktionen aus:&lt;br /&gt;
&lt;br /&gt;
* Der ALARM_Melder (wird weiter unten definiert) wird abgeschaltet. (konkret schaltet dies die eventuell laufende Aussensirene aus)&lt;br /&gt;
* die Scharfanzeige 2 wird deaktiviert, damit ist auch von aussen sichtbar, dass die Unscharfschaltung erfolgreich war.&lt;br /&gt;
* „verzoegert_scharf“ wird gelöscht, sofern es existiert. Dies verhindert vor allem, das die Anlage sich unkontrolliert selber scharf schaltet, wenn die Unscharfschaltung innerhalb einer Minute nach Scharfschaltung erfolgt (Im Haus was vergessen eben nochmal rein...). Im Normalfall erzeugt dies eine Fehlermeldung, da „verzoegert_scharf“ nach finaler Scharfschaltung nicht mehr exisitert, die Fehlermeldung kann aber ignoriert werden.&lt;br /&gt;
* Die Anlage wird auf „Warten“ gestellt . Dies soll verhindern, dass bei eventuell hektischem Manipulieren mit einer Fernbedienung die Anlage versehentlich sofort wieder scharf gestellt wird.&lt;br /&gt;
* Der ALARM Status wird auf unscharf gesetzt (damit geht auch eine eventuell interne Sirene aus)&lt;br /&gt;
* Die Scharfanzeige1 wird deaktiviert&lt;br /&gt;
* Die Anlage wird per at +00:00:11 in 11 Sekunden in den finalen Zustand überführt und auf unscharf gestellt. Sie ist jetzt wieder bereit zum Einschalten. Sicherheitshalber wird außerdem die Scharfanzeige2 nochmal deaktiviert, ausserdem wird die eventuell noch vorhanden Absenkung der Heizung (letzte Scharfschaltung nur 7 Minuten oder weniger zurück) gelöscht. Im Normalfall erzeugt dies eine Fehlermeldung, da „verzoegert_Heizung_absenken“ 7 Minuten nach einer scharfschaltung nicht mehr existiert, die Fehlermeldung kann aber ignoriert werden. Zuletzt wird der Brenner eingeschaltet; hier sind weitere ähnliche „Willkommensaktionen“ denkbar, wie Licht im Hausflur einschalten oder dergleichen.&lt;br /&gt;
* ANLAGE_SCHARF_intern und ANLAGE_SCHARF werden beide auf OFF gesetzt. Dies sorgt dafür das beide Schalter auf dem Webfrontend auf OFF stehen. Allerdings würde damit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;sich selbst auslösen. Um dies zu verhindern wird vorher geprüft, ob die Anlage überhaupt scharf war:&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off { if (&amp;quot;$value{ANLAGE_STATUS}&amp;quot; eq &amp;quot;scharf_intern&amp;quot; || &amp;quot;$value{ANLAGE_STATUS}&amp;quot; eq &amp;quot;scharf&amp;quot;)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;Hier liesse sich eventuell auch mit &amp;quot;setstate&amp;quot; anstatt &amp;quot;set&amp;quot; arbeiten, da setstate nur den Status auf dem Webfrontend ändern würde.&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Ist die Anlage bei Betätigen eines Ausschalters nicht scharf, werden sicherheitshalber mit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;else { fhem(&amp;quot; ... &amp;quot;)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
trotzdem alle Abschaltschritt ausgeführt, ausser ANLAGE_SCHARF_intern und ANLAGE_SCHARF auf OFF zu setzen (sowie den Brenner einzuschalten). Dies dient der höheren Robustheit, so können z.b. auch unklare Zustände der Anlage durch auschalten bereinigt werden. (Insbesondere der Fall, das aus irgendwelchen Gründen die Sirenen an sind, obwohl die Anlage eigentlich aus ist.)&lt;br /&gt;
&lt;br /&gt;
==== Scharfanzeige aktualisieren ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Scharfanzeige_update at +*00:10:00 { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf&amp;amp;quot; &lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; Value(&amp;quot;ANLAGE_SCHARF&amp;quot;) eq &amp;amp;quot;on&amp;amp;quot; ) { fhem (&amp;amp;quot;set Scharfanzeige2 on &amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define Scharfanzeige_intern_update at +*00:30:00 { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf_intern&amp;amp;quot; &lt;br /&gt;
&amp;amp;amp;&amp;amp;amp; Value(&amp;quot;ANLAGE_SCHARF_intern&amp;quot;) eq &amp;amp;quot;on&amp;amp;quot; ) { fhem (&amp;amp;quot;set Scharfanzeige2 on &amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Codeabschnitte dienen einzig dazu, sicherzustellen, dass die von außen sichtbare Scharfanzeige den Zustand der Alarmanlage auch korrekt anzeigt, selbst wenn die Auslösung bei der Scharfschaltung aufgrund von Funkstörungen nicht erfolgreich war.&lt;br /&gt;
Nichts senkt die Akzeptanz einer Alarmanalge so nachhaltig wie eine Scharfschaltung z.b. per Weboberfläche (die die erfolgreiche Scharfschaltung anzeigt, auch wenn die Scharfanzeige2 nicht geschaltet werden konnte) und ein anschließend nach Hause zurückkehrendes Familienmitglied, das nicht sehen kann, dass die Anlage scharf ist und dann ohne Unscharfschaltung die Haustür aufmacht.&lt;br /&gt;
&lt;br /&gt;
Da dieser Teil im Falle einer scharfen Anlage regelmäßig Funklast erzeugt, ist der Abfrageabstand hinreichend gross zu wählen. Im Beispiel ist die Abfrage für internen Alarm länger, da angenommen wird, dass bei interner Scharfschaltung alle Bewohner sowieso im Haus sind.&lt;br /&gt;
&lt;br /&gt;
Beide Codeabschnitte könnten durch Verwendung von &amp;quot;oder&amp;quot; Bedingungen zusammengefasst werden was aber eventuell etwas unübersichtlich ist.&lt;br /&gt;
&lt;br /&gt;
=== Abstraktionsschicht für Türkontakte (Fensterkontakte) ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Tuerkontakte----Namen-und-Zustände vereinheitlichen-------&lt;br /&gt;
define AussentuerEG_Eingang dummy&lt;br /&gt;
attr AussentuerEG_Eingang room Alarmanlage&lt;br /&gt;
attr AussentuerEG_Eingang loglevel 6&lt;br /&gt;
&lt;br /&gt;
define act_on_Eingang_TFK notify Eingang_TFK { if (Value(&amp;quot;Eingang_TFK&amp;quot;) eq &amp;amp;quot;off&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;define Eingangstuer_verzoegert_zu at +00:00:04 set AussentuerEG_Eingang zu&amp;amp;#160;;; set AussentuerEG_Eingang zu&amp;amp;quot;) } &lt;br /&gt;
else { fhem(&amp;amp;quot;define Eingangstuer_verzoegert_offen at +00:00:04 set AussentuerEG_Eingang offen&amp;amp;quot;) }}&lt;br /&gt;
define AussentuerEG_Terrasse dummy&lt;br /&gt;
attr AussentuerEG_Terrasse room Alarmanlage&lt;br /&gt;
attr AussentuerEG_Terrasse loglevel 6&lt;br /&gt;
define act_on_Tuer_Wohn_u1 notify Tuer_Wohn_u { if (Value(&amp;quot;Tuer_Wohn_u&amp;quot;) eq &amp;amp;quot;Closed&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set AussentuerEG_Terrasse zu&amp;amp;quot;) } else { fhem(&amp;amp;quot;set AussentuerEG_Terrasse offen&amp;amp;quot;) }}&lt;br /&gt;
define AussentuerUG_Keller dummy&lt;br /&gt;
attr AussentuerUG_Keller room Alarmanlage&lt;br /&gt;
attr AussentuerUG_Keller loglevel 6&lt;br /&gt;
define act_on_Tuer_Keller_Aussen1 notify Tuer_Keller_Aussen { if (Value(&amp;quot;Tuer_Keller_Aussen&amp;quot;) eq &amp;amp;quot;Closed&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set AussentuerUG_Keller zu&amp;amp;quot;) } else { fhem(&amp;amp;quot;set AussentuerUG_Keller offen&amp;amp;quot;) }}&lt;br /&gt;
define AussentuerUG_Heizungskeller dummy&lt;br /&gt;
attr AussentuerUG_Heizungskeller room Alarmanlage&lt;br /&gt;
attr AussentuerUG_Heizungskeller loglevel 6&lt;br /&gt;
define act_on_Tuer_Heizungskeller1 notify Tuer_Heizungskeller { if (Value(&amp;quot;Tuer_Heizungskeller&amp;quot;) eq &amp;amp;quot;closed&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set AussentuerUG_Heizungskeller zu&amp;amp;quot;) } else { fhem(&amp;amp;quot;set AussentuerUG_Heizungskeller offen&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird der Abstraktionslayer für die Türsensoren angelegt. Alle Dummies heißen „AussentuerXX_Ort“ und sind daher später mittels eines Events der Art notify Aussentuer.* abfragbar. Außerdem werden die verschiedenen Status der diversen Melder auf die Zusände „offen“ und „zu“ gemappt. Durch Loglevel= 6 wird verhindert, das die Zustandsänderungen gesondert im Log erscheinen, da die Zustandsänderungen der jeweiligen Sensoren bereits im Log vermerkt sind.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel sind nur einige Türen aufgeführt, tatsächlich sind so alle Türen mit dem einen oder anderen Sensor einbindbar. Da die [[FHT80TF]] Sensoren (Fhem: FHTTK) nicht bei Statusänderungen senden, kann eine Alarmauslösung hier bis zu 2 Minuten verzögert erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier nicht ausgeführt, aber prinzipiell analog können Fenstersensoren aufgebaut werden. Mittels handelsüblicher Glasbruchsensoren, die an die externen Kontakte eines FS20 oder HM Türkontakts angeschlossen werden, lassen sich günstig Glasbruchmelder bauen. Bei Fenstern, die nicht optisch sichtbar sind (Kellerfenster) lässt sich anstatt eines „echten“ Glasbruchsensors der Glasbruch auch durch einen getrennt auf die Scheibe geklebten Magneten und HM-SEC-SC realisieren, bei Glasbruch fallen beide Komponenten höchstwahrscheinlich getrennt zu Boden und lösen dann aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Eingangstür erfährt ausserdem eine Sonderbehandlung. Sie soll Alarm erst 4 Sekunden nach öffnen auslösen. Dies dient dazu bei z.b. vergessenem Sender das Haus dennoch betreten zu können. Und zwar hat man nach öffnen der Tür noch 4 Sekunden Zeit, die Alarmanlage mit dem innen verdeckt angebrachten Schalter unscharf zu schalten. Es liegt zunächst nahe, diese Verzögerung in die eigentliche (weiter unten beschriebene) Alarmauslösungsroutine einzubauen. Allerdings würde diese dadurch deutlich komplizierter, es wäre insbesondere nicht mehr möglich mit nur einem Ausdruck alle Türen auf einemal abzufragen.&lt;br /&gt;
&lt;br /&gt;
Anstelle dessen wird hier der Abstraktionslayer über dem eigentlichen Sensor verwendet um zusätzliche Funktionalität einzubauen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_Eingang_TFK notify Eingang_TFK { if (Value(&amp;quot;Eingang_TFK&amp;quot;) eq &amp;amp;quot;off&amp;amp;quot;)&lt;br /&gt;
{ fhem(&amp;amp;quot;define Eingangstuer_verzoegert_zu at +00:00:04 set AussentuerEG_Eingang zu&amp;amp;#160;;; set AussentuerEG_Eingang zu&amp;amp;quot;) } &lt;br /&gt;
else { fhem(&amp;amp;quot;define Eingangstuer_verzoegert_offen at +00:00:04 set AussentuerEG_Eingang offen&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird einfach jeder Schaltvorgang des TFK 4 Sekunden verzögert. Wichtig ist es, dies auch beim Schliessen der Tür zu tun, da sonst bei einem (z.b. versehentlichen) schnellen Öffnen und Schliessen der Tür der Dummy &amp;quot;AussentuerEG_Eingang&amp;quot; den falschen Wert annehmen kann: Wird die Tür nämlich geöffnet, aber z.b. nach 2 Sekunden geschlossen, würde die AussentuerEG_Eingang zwar zunächst auf &amp;quot;zu&amp;quot; gesetzt, aber weitere 2 Sekunden später durch die 4 Sekunden Öffnungsverzögerung wieder auf &amp;quot;offen&amp;quot; gesetzt. Daher muss auch das Setzen von AussentuerEG_Eingang auf &amp;quot;zu&amp;quot; mit 4 Sekunden Verzögerung erneut erfolgen.&lt;br /&gt;
&lt;br /&gt;
Die zunächst naheliegend erscheinende Lösung, beim Schliessen das eventuelle noch vorhandene &amp;quot;Eingangstuer_verzoegert_offen&amp;quot; zu löschen, kann nicht verwendet werden, da dann ein Einbrecher, der es schaffen würden, die Tür zu öffnen und innerhalb von 4 Sekunden wieder zu schliessen keinen Alarm auslösen würde.&lt;br /&gt;
&lt;br /&gt;
=== Abstraktionsschicht für Bewegungsmelder ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Bewegungsmelder----Namen-und-Zustände vereinheitlichen-------&lt;br /&gt;
define Bewegung_Wohnen_oben dummy&lt;br /&gt;
attr Bewegung_Wohnen_oben room Alarmanlage&lt;br /&gt;
define act_on_PIRI_WZ_o1 notify PIRI_WZ_o:on.* { fhem(&amp;amp;quot;set Bewegung_Wohnen_oben bewegung&amp;amp;#160;;; &lt;br /&gt;
define reset_Bewegung_Wohnen_oben at +00:03:00 set Bewegung_Wohnen_oben keine &amp;amp;quot;) }&lt;br /&gt;
&lt;br /&gt;
define Bewegung_Bad_EG dummy&lt;br /&gt;
attr Bewegung_Bad_EG room Alarmanlage&lt;br /&gt;
&lt;br /&gt;
define act_on_zk_pumpe1 notify zk_pumpe:on.* { fhem(&amp;amp;quot;set Bewegung_Bad_EG bewegung&amp;amp;#160;;; &lt;br /&gt;
define reset_Bewegung_Bad_EG at +00:03:00 set Bewegung_Bad_EG keine &amp;amp;quot;) }&lt;br /&gt;
define act_on_Licht1_Bad notify Licht1_Bad:on.* { fhem(&amp;amp;quot;set Bewegung_Bad_EG bewegung&amp;amp;#160;;; &lt;br /&gt;
define reset_Bewegung_Bad_EG at +00:03:00 set Bewegung_Bad_EG keine &amp;amp;quot;) }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird der Abstraktionslayer für Bewegungsmelder definiert. Exemplarisch sind 2 Melder aufgehführt. Alle Dummies heissen „Bewegung_Ort1_ort1“ und sind daher mit „notify Bewegung.*“ abfragbar&lt;br /&gt;
Alle Zustände werden auf „bewegung“ bzw „keine“ gemappt.&lt;br /&gt;
Da Bewegungsmelder idR. Nur „on“ melden, aber nicht „off“ bei keiner Bewegung, wird hier 3 Minuten nach einer Auslösung der Zustand auf „keine“ gesetzt. Diese Zeit ist mit den eingestellten Sendezeiten des Bewegungsmelders abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Ein Besonderheit ist Bewegung_Bad_EG: Historisch bedingt ist hier ein Bewegungsmelder direkt mit der Zirkulationspumpe gekoppelt, bzw über den zweiten Kanal mit dem Licht im Badezimmer. Eine Besonderheit ist dabei, dass die Zirkulationspumpe nach 2 Uhr bis 6 Uhr trotz Auslösung nicht eingeschaltet wird (nachts will keiner duschen) und Licht tagsüber nicht angeht.&lt;br /&gt;
Zur Abdeckung von Bewegungen über den gesamten Tagesverlauf müssen daher sowohl Statusänderung der Zirkulationspumpe als auch des Badezimmerlichts abgefragt werden. Als Nebeneffekt würde das Einschalten der Zirkulationspumpe über andere Methoden im Falle einer scharfen Alarmanlage einen Alarm auslösen. Tatsächlich lässt sich die Zirkulationspumpe über Schalter im Schlafzimmer und in der Küche für 15 Minuten einschalten. Faktisch spiel dies allerdings keine Rolle, da das Betätigen von Schaltern im Haus bei scharfer Alarmanlage eigentlich nur von unberechtigten Personen erfolgen kann.&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Erweiterung ist sogar, dass Betätigen aller Schalter (außer den Tastern zum Schalten der Alarmanlage selbst) zur Alarmauslösung zu nutzen. Das ist hier noch nicht realisiert, da bei umfangreichen Automatisonsszenarien peinlich genau geprüft werden muss, ob Schaltungen nicht automatisch durch Scripte in Fhem erfolgen, also welche Lichter z.b. bei Dämmerung von alleine eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Meldegruppen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Meldegruppenueberwachung----------------------&lt;br /&gt;
define MeldegruppeUG FS20 22224222 11&lt;br /&gt;
attr MeldegruppeUG IODev CUL2&lt;br /&gt;
define MeldegruppeEG FS20 22224222 21&lt;br /&gt;
attr MeldegruppeEG IODev CUL2&lt;br /&gt;
define Meldegruppe3 FS20 22224222 31&lt;br /&gt;
attr Meldegruppe3 IODev CUL2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier werden verschiedene Meldegruppen definiert. Es werden diverse Melder so zusammengefasst, dass eine grobe Anzeige des Auslöseortes möglich ist.&lt;br /&gt;
Im Beispiel werden die Türen im Keller, Türen im EG und Bewegungsmelder zusammengefasst. Die Meldegruppen lösen einen Aktor aus, der den Zustand der Meldegruppe anzeigt, hier eine LED am Ausgang des FS20 8-Kanal-Schaltmodul FS20SM8. Da die Schaltung bei Bewegung im Haus relativ häufig erfolgt, ist als IOdev das schwächer belastetes RFR CUL definiert. &lt;br /&gt;
(im folgenden Codebeispiel finden sich auch Melder, die in den Beispielen weiter oben der Übersichtlichkeit halber weggelassen wurden)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define check_MeldegruppeUG_klar notify AussentuerUG.* { if (Value(&amp;quot;MeldegruppeUG&amp;quot;) eq &amp;amp;quot;off&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;AussentuerUG_Keller&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;AussentuerUG_Waschkeller&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;AussentuerUG_Heizungskeller&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot;) { fhem (&amp;amp;quot;set MeldegruppeUG on&amp;amp;quot;) }}&lt;br /&gt;
define check_MeldegruppeUG_unklar notify AussentuerUG.*:offen { if (Value(&amp;quot;MeldegruppeUG&amp;quot;) eq &amp;amp;quot;on&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set MeldegruppeUG off&amp;amp;quot;) }}&lt;br /&gt;
&lt;br /&gt;
define check_MeldegruppeEG_klar notify AussentuerEG.* { if (Value(&amp;quot;MeldegruppeEG&amp;quot;) eq &amp;amp;quot;off&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;AussentuerEG_Schlafen&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;AussentuerEG_Terrasse&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;AussentuerEG_Eingang&amp;quot;) eq &amp;amp;quot;zu&amp;amp;quot;) { fhem (&amp;amp;quot;set MeldegruppeEG on&amp;amp;quot;) }}&lt;br /&gt;
define check_MeldegruppeEG_unklar notify AussentuerEG.*:offen { if (Value(&amp;quot;MeldegruppeEG&amp;quot;) eq &amp;amp;quot;on&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set MeldegruppeEG off&amp;amp;quot;) }}&lt;br /&gt;
&lt;br /&gt;
define check_Meldegruppe3 notify Bewegung.* { if (Value(&amp;quot;Bewegung_Wohnen_oben&amp;quot;) eq &amp;amp;quot;keine&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;Bewegung_Bad_EG&amp;quot;) eq &amp;amp;quot;keine&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;Bewegung_Wohnen_unten&amp;quot;) eq &amp;amp;quot;keine&amp;amp;quot;) &lt;br /&gt;
{ fhem (&amp;amp;quot;set Meldegruppe3 on&amp;amp;quot;) } else { fhem (&amp;amp;quot;set Meldegruppe3 off&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird jede Meldegruppe behandelt. Zunächst wird bei jeder Veränderung einer Aussentür in der passenden Etage (durch strukturierte Namen der Dummies mit einem notify abfragbar) geprüft, ob alle Türen zu sind und ob die Meldegruppe bisher „off“ (also „unklar“) war. Wenn alle Bedingungen zutreffen wird die Meldegruppe auf „on“ (also „klar“) gesetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;notify AussentuerEG.*&amp;quot; wird dabei durch den Einsatz der FHT80TF ca. alle 2 Minuten ausgelöst. Um zu verhindern, dass alle zwei Minuten - oder beim Einsatz mehrerer FHT80TF in einer Meldegruppe auch öfters – Funksignale zum Schalten einer LED ausgesendet werden, obwohl die LED bereits den richtigen Zustand hat, wird nach dem Zustand der Meldegruppe gefragt und nur ein „on“ gesendet, wenn die Gruppe vorher „off“ war.&lt;br /&gt;
Dies macht das Auschalten über ein „else“ Statement aber schwierig, da die Gruppe dann auf „off“ geschaltet würde, wenn bei einem Event alle Türen zu sind, aber auch vorher schon alle zu waren und die Gruppe daher schon „on“ war.&lt;br /&gt;
&lt;br /&gt;
Die Gruppe wird daher über eine seperates notify ausgeschaltet, hier wird nur gesendet, wenn irgendeine der Türen seinen Status zu offen ändert und die Gruppe vorher „on“ war.&lt;br /&gt;
&lt;br /&gt;
Die Bewegungsmelder senden nur bei einem tatsächlichen Event. Hier muss daher nicht überprüft werden, welchen Zustand die Meldegruppe vorher hatte. Jede Statusmeldung ist eine tatsächliche Änderung.&lt;br /&gt;
&lt;br /&gt;
Da die Meldegruppen den Zustand häufig ändern, kann überlegt werden, mit attr .... loglevel 6 die Anzahl der Logeinträge zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Alarmauslösung und Behandlung ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Alarmauslösung-------------------------------&lt;br /&gt;
define ALARM_STATUS dummy&lt;br /&gt;
attr ALARM_STATUS room Alarmanlage&lt;br /&gt;
define ALARM_Melder FS20 22224222 33&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird der Dummy für den eigentlichen Alarm definiert sowie ein Aktor für den Alarmmelder, also typischerweise einen Aussensirene. &lt;br /&gt;
ALARM_Melder ist dabei noch nicht der tatsächliche Aktor. In der konkreten Anlage ist der Aktor eine HM Schalter, da beim Auslösen der Aussensirene höchste Zuverlässigkeit gefordert ist. Die bidirektionale Kommunikation von HM ist daher vorteilhaft. Dieser HM Aktor wird durch ALARM_Melder per Notify ausgelöst. Die Abstraktion über den zusätzlichen FS20 Aktor dient hier nur dazu, die Sirene auch über andere FS20 Sender direkt auslösen zu können, z.b. durch einen Paniksender. Je nach gegebener Umgebung kann diese Abstraktion aufgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==== Alarmauslösung durch Türöffnung ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_Aussentuer notify Aussentuer.*:offen &lt;br /&gt;
{ if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf&amp;amp;quot; || Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf_intern&amp;amp;quot;) &lt;br /&gt;
{ fhem(&amp;amp;quot;set ALARM_STATUS ALARM&amp;amp;#160;;; set Licht_an on&amp;amp;#160;;; set ALARM_Melder on&amp;amp;quot;) } }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieser Teil des Codes löst den Alarm aus, wenn eine Tür geöffnet wird. &lt;br /&gt;
(Für Fenster gibt einen analogen Codeabschnitt)&lt;br /&gt;
Hierbei verhalten sich die FHT80TF und &amp;quot;normale&amp;quot; FS20 Tür/Fensterkontakte unterschiedlich:&lt;br /&gt;
Der FTH80TF löst Alarm aus, auch wenn er zum Zeitpunkt der Scharfschaltung schon offen war: eine nach spätestens ca. 4 Minuten kommende Meldung über den Zustand des Tür (oder des Fensters) löst den Alarm aus. Andere Sensoren ändern den Status jedoch nicht mehr, bis sie wieder geschlossen wurden und lösen daher keinen Alarm aus, wenn sie schon offen waren als die Alarmanlage scharf geschaltet wurde.&lt;br /&gt;
&lt;br /&gt;
In jedem Fall löst ein Wechsel des Zustandes als solches keinen Alarm aus. Wenn also z.b ein Fenster, das mit einem FHT80TF überwacht wird, erst vor kurzem geschlossen wurde und sein Zustand daher (innerhalb der ersten maximal 4 Minuten nach schliessen) noch auf &amp;quot;open&amp;quot; steht, so kann die Alarmanlage trotzdem scharf geschaltet werden. Die wenige Minuten später eintreffende Aktualisierung zu &amp;quot;closed&amp;quot; löst die Anlage nicht aus.&lt;br /&gt;
&lt;br /&gt;
Jedes „Tür offen“ Event löst die Prüfung aus, ob die Anlage scharf oder scharf_intern ist. &lt;br /&gt;
(Dies geschieht durch den Perl-Ausdruck für &amp;quot;oder&amp;quot;  &amp;quot; || &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wenn die Anlage in einem der beiden Scharzfustände ist, wird&lt;br /&gt;
&lt;br /&gt;
* ALARM STATUS auf ALARM gesetzt. Damit wird die LED Anzeige für Alarm ausgelöst und eine ggf an den Aktor ebenfalls angeschlossene Sirene im Haus sofort ausgelöst. Für externe Sirenen wird jedoch der zusätzliche Aktor&lt;br /&gt;
* ALARM_Melder auf „on“ gesetzt. Dies erlaubt abgestuft zu reagieren, z.b. den Hauptalarm verzögert auszulösen und mit Zeitbegrenzung zu versehen.&lt;br /&gt;
* ausserdem wird mit dem in der normalen Automation definierten Dummy „Licht_an“ jedes im Haus schaltbare Licht eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Natürlich liessen sich auch weitere Aktionen auslösen.&lt;br /&gt;
&lt;br /&gt;
==== Alarmauslösung durch Bewegung ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_Bewegung notify Bewegung.*:bewegung { if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
Value(&amp;quot;ALARM_STATUS&amp;quot;) ne &amp;amp;quot;ALARM&amp;amp;quot;) { fhem(&amp;amp;quot;set ALARM_STATUS ALARM&amp;amp;#160;;; set Licht_an on&amp;amp;#160;;; &lt;br /&gt;
set ALARM_Melder on&amp;amp;#160;;; define ALARMIERT at +00:03:00 set ALARM_STATUS IRausgeloest&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieser Teil des Codes löst den Alarm aus, wenn eine Bewegung registriert wird.&lt;br /&gt;
Weil Bewegungsmelder potentiell im Alarmfall häufiger ausgelöst werden als Türen, muss hier zur Vermeidung von Problemen mit dem Erreichen der maximalen Sendezeit nicht nur überprüft werden, ob die Anlage scharf ist, sondern auch, ob der Alarm bereits ausgelöst wurde. &lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall (also ist die Anlage unscharf oder ALARM_STATUS bereits auf „ALARM“) wird keine weitere Aktion ausgelöst. Dadurch wird die Anzahl der Funksignale deutlich reduziert.&lt;br /&gt;
&lt;br /&gt;
Dieser Teil reagiert ausserdem nicht, wenn die Anlage nur intern scharf ist.&lt;br /&gt;
&lt;br /&gt;
Ist die Anlage scharf und wurde bisher kein Alarm ausgelöst, dann erzeugt eine Bewegung:&lt;br /&gt;
&lt;br /&gt;
* ALARM_STATUS wird auf ALARM gesetzt&lt;br /&gt;
* ALARM_Melder wird auf „on“ gesetzt. Dies erlaubt abgestuft zu reagieren, z.b. den Hautpalarm verzögert auszulösen und mit Zeitbegrenzung zu versehen.&lt;br /&gt;
* ausserdem wird mit dem in der normalen Automation definiertem Dummy „Licht_an“ jedes im Haus schaltbare Licht eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Die Maßnahme zur Reduzierung der Funklast bei Bewegung im Haus wenn die Anlage scharf ist bewirkt jedoch, dass die Anlage stumm bleibt, nachdem die maximale (gesetzliche) Alarmdauer von 3 Minuten bei der Außensirene erreicht ist.&lt;br /&gt;
Der Codeabschnitt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define ALARMIERT at +00:03:00 set ALARM_STATUS IRausgeloest&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
dient dazu, nach diesen 3 Minuten den Zustand der Anlage von „ALARM“ auf „IRausgeloest“ zu setzen. Somit würde nach 3 Minuten eine erneute Bewegung die Anlage erneut auslösen und die Sirene würde ebenso erneut ausgelöst.&lt;br /&gt;
&lt;br /&gt;
=== Sirene ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Sirene---------------------------------------&lt;br /&gt;
define act_on_ALARM_Melder notify ALARM_Melder:on&lt;br /&gt;
{ if (Value(&amp;quot;ANLAGE_STATUS&amp;quot;) eq &amp;amp;quot;scharf&amp;amp;quot;) { fhem(&amp;amp;quot;define EXT_SIRENE_AN &lt;br /&gt;
at +00:00:15 set HM_SIRENE on-for-timer 176&amp;amp;quot;) }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird vor dem Einschalten der Sirene letztmalig überprüft, ob die Anlage scharf ist (Bei zusätzlicher Auslösemöglichkeit durch Panikschalter o.ä. müsste dieser Punkt angepasst werden). Wenn ja, wird die Sirene zeitverzögert um 15 Sekunden für 3 Minuten eingeschaltet. Da die interne Sirene direkt an die Alarmauslösung gekoppelt ist, erzeugt dies nach einem Fehlalarm (interne Sirene bereits an) noch etwas Zeit, die Alarmanlage schnell auszuschalten, bevor auch die externe Sirene aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
== Praxis ==&lt;br /&gt;
Es empfiehlt sich, die Anlage zunächst ohne externe Sirene zu betreiben, am Anfang eventuell sogar mit gedämpfter interner Sirene. Erfahrungsgemäss dauert es mindestens 2-3 Wochen, bis alle Familienmitglieder an die Anlage denken, bevor sie das Haus betreten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weitere Schritte ==&lt;br /&gt;
* Bei externer Scharfschaltung löst das Betätigen von Schaltern (jemand macht das Licht an) Alarm aus&lt;br /&gt;
* nach einem längeren Zeitraum ohne erkennbare Aktivität im Innenraum (keiner da, vergessen scharf zu schalten) schaltet sich die Anlage selber scharf.&lt;br /&gt;
* Alarmierung bei Auslösung von Feuermeldern&lt;br /&gt;
* diverse etwas unsaubere Stellen bereinigen (Defintion aller Dummies und Aktoren zusammenfassen, Code vereinheitlichen, Funklast weiter reduzieren, etc.)&lt;br /&gt;
* In Zusammenhang mit im Wiki an anderer Stelle beschriebenen &amp;quot;Zuhause Status&amp;quot; Überprüfungen lässt sich eventuell eine vollautomatische Scharf/-Unscharfschaltung bei An- und Abwesenheit berechtigter Personen realisieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=2957</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=2957"/>
		<updated>2013-09-26T19:59:03Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* IST-Temperaturwerte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAX! Heizungssteuerung&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN,&lt;br /&gt;
oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden.&lt;br /&gt;
In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B.&lt;br /&gt;
checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden.&lt;br /&gt;
Beim CUL sieht man die Funknachrichten direkt.&lt;br /&gt;
Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert,&lt;br /&gt;
der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]]ung dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden,&lt;br /&gt;
und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird&lt;br /&gt;
man über Veränderungen informiert.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
 define BUTTON.EG MAX PushButton 069d33&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können NICHT an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX CUL_MAX].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen.&lt;br /&gt;
Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm/ml pairmode&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er&lt;br /&gt;
standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung&lt;br /&gt;
in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn ich z.B.&lt;br /&gt;
set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&lt;br /&gt;
ausführe, dann&lt;br /&gt;
sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM)&lt;br /&gt;
an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0&lt;br /&gt;
erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der MAXFensterKontakt0 offen ist.&lt;br /&gt;
Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz.&lt;br /&gt;
Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal eine ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danch wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen.&lt;br /&gt;
Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeSC Heizung 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeSC Heizung 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln.&lt;br /&gt;
Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden.&lt;br /&gt;
Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur&lt;br /&gt;
höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribute auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, das dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub MaxFakeWallThermostat($$)&lt;br /&gt;
{&lt;br /&gt;
 my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
 my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
 my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
 my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
 my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
 my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
 if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
 $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
 (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
  Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
  readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
  fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
- Das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
- das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
- oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat erstellen ===&lt;br /&gt;
Ein Heizplan, den der Wandthermostat versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set WZ_Wandthermostat weekProfile &lt;br /&gt;
 Mon 17,17:30,20,23:00,17 &lt;br /&gt;
 Tue 17,17:30,20,23:00,17&lt;br /&gt;
 Wed 17,17:30,20,23:00,17&lt;br /&gt;
 Thu 17,17:30,20,23:00,17&lt;br /&gt;
 Fri 17,15:00,20,23:00,17&lt;br /&gt;
 Sat 17,11:00,20,23:00,17&lt;br /&gt;
 Sun 17,11:00,20,23:00,17&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch unter [http://fhem.de/commandref.html#MAX http://fhem.de/commandref.html#MAX]. &lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern, bzw Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt;. Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sinkte die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird scheinbar aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=1989</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=1989"/>
		<updated>2013-05-17T19:15:06Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* Hinweise zum Betrieb mit FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CUL&#039;&#039;&#039;&lt;br /&gt;
= Beschreibung =&lt;br /&gt;
CUL (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist ein RF-Device im Formfaktor eines USB-Dongles mit externer Antenne. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8bit Atmel Prozessor vorverarbeitet. Mit verfügbarer Opensource Firmware (im Umfeld von FHEM die &amp;quot;culfw&amp;quot;) kann das CUL verschiedene 868MHz Protokolle empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433 MHz Intertechno (z.b. viele Baumarkt Funksteckdosen) Protokolle. &lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[SlowRF]] - Mode&amp;quot;) wird die Dekodierung der per AM in 1KHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des CULModuls von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]]). Bei CULs älter als Version&amp;amp;#160;3 ist außerdem der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim Flashen der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den SlowRF Mode (jedoch nicht für den HM Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Seit Ende 2012 gibt es ausserdem ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.B. FS20 gleichzeitig über ein CUL) wohl [http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10510&amp;amp;amp;start=0&amp;amp;amp;rid=417 nicht angeraten].&lt;br /&gt;
&lt;br /&gt;
Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies stellt einen Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten dar.&lt;br /&gt;
&lt;br /&gt;
Falls keine RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch die abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4 GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können aber im SlowRF Mode frei angepasst und somit für örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039;Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;amp;lt;Enter&amp;amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken). &amp;quot;myCUL&amp;quot; ist nur ein Platzhalter und mit dem Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen:&lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der CULFW Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED soll nur bei Senden / Empfangen blinken&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED soll regelmäßig (1Hz) und beim Senden / Empfangen blinken&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw B00. Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms slots, ein FS20 Befehl braucht ca. 210ms, eine FHT Kommunikation wesentlich mehr.&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebniss bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes gross, Platz für 14 bis 31 FHT Messages)&lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. Rückgabe z.B.:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325KHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in db. Default ist x08 = + 5db. Bitte im Interesse von Nachbarn und der Abhörsicherheit kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. Siehe auch Diskussion unter [https://groups.google.com/group/cul-fans/browse_thread/thread/683ca5c892eae1c3/c682a640f1ba863c?lnk=gst&amp;amp;amp;q=bWidth+freq#c682a640f1ba863c GoogleGroups-CUL-Fans]&lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind MIT Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.b. [[RFR CUL]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;Beim CUL im HM-Modus kann man (ohne firmware-mod) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039;verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ([http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10203&amp;amp;amp;goto=57191&amp;amp;amp;rid=417#msg_57191 Quelle]).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
&lt;br /&gt;
* *: &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* *: &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* *: &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* *: &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstaerke jeder Flanke wird gemeldet&lt;br /&gt;
* *: &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt;normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Gross- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL stehen hier: [http://culfw.de/commandref.html http://culfw.de/commandref.html]&lt;br /&gt;
&lt;br /&gt;
= Versionen =&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HM Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 Kb RAM, 32 Kb Flashmemory, 1 kByte EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 Kb RAM 32 Kb Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des atmega32u4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und Fhem keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
= Sendefrequenz =&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im SlowRF Mode auch durch direkte Befehle aus Fhem (im HM Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
Es ist es durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das Fhem Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
&lt;br /&gt;
Denkbar ist auch der Einsatz eines CUL 433 MHz im Zusammenhang mit HomeMatic. Hier wird das CUL normalerweise im HM Mode betrieben, dessen Frequenz auf 868 MHz fest eingestellt ist. Die verminderte Sendeleistung aufgrund der falschen Antenne fällt je nach örtlicher Gegebenheit eventuell nicht ins Gewicht, da HomeMatic aufgrund seiner besseren Empfänger grundsätzlich etwas bessere Reichweiten hat als die empfangsseitig simplen Intertechnomodule. Soll nun ein Intertechnomodul geschaltet werden, wird das CUL kurzzeitig auf SlowRF umgeschaltet und dann in 433 MHz betrieben, jetzt mit optimaler Antennenabstimmung zur Reichweitenoptimierung der Intertechno-Komponenten, danach wird sofort in den HM Modus zurückgeschaltet, wodurch sich die Frequenz auch automatisch wieder auf 868 MHz ändert. Theoretisch ist hierbei allerdings der Verlust von HM-ACK Meldungen möglich, wenn diese dem Moment eintreffen, in dem das CUL gerade auf Intertechno umgeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Im Gegensatz zu den original FHZ Zentralen ist das CUL recht flankensteil, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.b. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern z.b. der FHTs Raumregler zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35MHz einstellen. Standardmäßig ist hier aus Kompatibelitätsgründen 868,30MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL_0 freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte (&amp;lt;nowiki&amp;gt;[https://groups.google.com/forum/#!msg/fhem-users/HAaBri3eQgk/pqxHlN1aHkIJ%7Csie Diskussion hier]&amp;lt;/nowiki&amp;gt;). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL_0 sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandweite auf z.B. 464 khz aufzuweiten.&lt;br /&gt;
= Links =&lt;br /&gt;
* [[:Kategorie:CUL]] - weitere Seiten rund um CUL &lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* [http://culfw.de/culfw.html culfw.de] - Homepage der CUL firmware&lt;br /&gt;
** [http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/ Sourceforge CUL firmware]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:CUL]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&amp;diff=1245</id>
		<title>HM-CFG-LAN LAN Konfigurations-Adapter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CFG-LAN_LAN_Konfigurations-Adapter&amp;diff=1245"/>
		<updated>2013-05-10T21:22:30Z</updated>

		<summary type="html">&lt;p&gt;Generix: /* HMLAN versus CUL / CUNO / COC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorbemerkungen ==&lt;br /&gt;
Der HomeMatic LAN Konfigurations-Adapter (HMLAN) stellt eine Alternative zum [[CUN&amp;quot; class=&amp;quot;mw-redirect]]O im HomeMatic Modus dar. Er ist eigentlich als Konfigurationstool gedacht, kann aber von der HomeMatic CCU zur Verbesserung der Funksituation genutzt werden. Deshalb kann er auch von FHEM als Funkadapter verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== HMLAN versus CUL / CUNO / COC ===&lt;br /&gt;
Stand 17.01./12.03.2013 können folgende Homematic-Geräte nur mit einem HMLAN (aber nicht mit [[CUN&amp;quot; class=&amp;quot;mw-redirect]]O / COC) &amp;lt;ins&amp;gt;umfassend&amp;lt;/ins&amp;gt; mit FHEM betrieben werden:&lt;br /&gt;
&lt;br /&gt;
* KeyMatic, Funk-Türschlossantrieb - (HM-Sec-Key, HM-Sec-Key-S, HM-Sec-Key-O, HM-Sec-Key-Generic)&lt;br /&gt;
* Bausatz, Schaltaktor für Batteriebetrieb - (HM-LC-Sw1-Ba-PCB)&lt;br /&gt;
* WinMatic, Funk-Fensterantrieb - (HM-Sec-Win)&lt;br /&gt;
* Funk-Rauchmelder - (HM-Sec-SD, HM-Sec-SD-Generic)&lt;br /&gt;
* Statusanzeige &amp;quot;im Retro-Design&amp;quot; - (HM-Dis-TD-T)&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; [[HM-LC-SW1-BA-PCB]] &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; [[HM-Sec-SFA-SM]] &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* HM-RC-19&lt;br /&gt;
* HM-RC-19-B&lt;br /&gt;
* HM-RC-19-SW&lt;br /&gt;
* ...&lt;br /&gt;
* [[HM-LC-SW1-BA-PCB]]&lt;br /&gt;
&lt;br /&gt;
Grund ist die im CUL / CUNO / COC fehlende AES-Übertragung (KeyMatic) und / oder ein fehlender (sogenannter) Burst-Modus (z.B. HM-Dis-TD-T).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&amp;lt;ins&amp;gt;Diese Liste erhebt keinen Anspruch auf Vollständigkeit und die Angaben sind ohne Gewähr.&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe z.B. [http://forum.fhem.de/index.php?t=rview&amp;amp;amp;goto=68226#msg_68226 diesen].&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
Der HMLAN Konfigurator ist ähnlich wie der CUN(O) ein Netzwerkgerät. Er beherrscht DHCP und bezieht bei einem im Netzwerk erreichbaren DHCP Servers von diesem eine IP-Adresse. Da FHEM zwecks Kommunikation die IP-Adresse wissen muss, kann es sinnvoll sein, dem HMLAN Konfigurator zunächst eine statische Adresse zuzuweisen, da bei einer per DHCP vergebenen Adresse nicht sicher ist, dass diese sich nie ändert. Dies ist mit der auf der CD mitgelieferten &amp;quot;HM Lan-Interface Konfigurator&amp;quot; Software möglich. Eleganter ist es natürlich, dem HMLAN im DHCP-Server eine feste Adresse zuzuweisen - sofern dies vom gegeben DHCP Server als Konfigurationsoption unterstützt wird.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist aber vor allem, dass vor Verwendung die &amp;quot;AES Encryptet LAN Communication&amp;quot; abgeschaltet wird, da diese von FHEM nicht beherrscht wird. Dies ist unter &amp;quot;Change IP Settings&amp;quot; der &amp;quot;HM Lan-Interface Konfigurator&amp;quot; Software möglich (Achtung: Dem HMLAN Konfigurator liegen zwei Konfigurationsprogramme bei, bitte darauf achten, das Richtige zu verwenden). &lt;br /&gt;
&lt;br /&gt;
Dies hat nichts mit der HM &amp;quot;[[AES Encryption]]&amp;quot; zu tun, die mit dem HMLAN Konfigurator genutzt werden könnte, mit CUL oder CUN(O) aber nicht.&lt;br /&gt;
&lt;br /&gt;
Wenn das Konfigurationsprogramm Probleme hat das HMLAN zu finden, sollten alle nicht benutzten Netzwerkinterfaces vorübergehend deaktiviert werden, siehe [http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10933&amp;amp;amp;goto=62960&amp;amp;amp;rid=42#msg_62960 FHEM-Foren-Beitrag].&lt;br /&gt;
&lt;br /&gt;
Da die Konfigrationssoftware nur unter Windows läuft, braucht man z.B. für OS X eine Windows Emulation.&lt;br /&gt;
Damit ist die Konfiguration jedoch problemlos möglich, sieh z.b. hier:&lt;br /&gt;
[http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=11506&amp;amp;amp;goto=67417&amp;amp;amp;rid=417#msg_67417 Anleitung für OS X].&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
Dann muss der HMLAN-Konfigurator in FHEM definiert werden. Dazu in die fhem.cfg eintragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HMLAN1 HMLAN &amp;amp;lt;IP Adresse&amp;amp;gt;:1000 &lt;br /&gt;
attr HMLAN1 hmId 123ABC&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Name HMLAN1 kann frei vergeben werden. Das Standard IP Port des HMLAN-Konfigurator ist 1000.&lt;br /&gt;
&lt;br /&gt;
HMLAN kennt mehrere Attribute (siehe commandref), wichtig ist vor allem, für den HMLAN eine Adresse festzulegen, die HM-ID. Diese muss hexadezimal und 6 stellig sein. 000000 und FFFFFF sind nicht gültig. Jedes Wechseln dieser Adresse erfordert neues pairen &#039;&#039;&#039;aller&#039;&#039;&#039;HM Geräte!&lt;br /&gt;
&lt;br /&gt;
Die Adresse sollte in fhem.cfg in Grossbuchstaben eingegeben werden, siehe [[HMLAN Konfigurator]].&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;gleichzeitiger&#039;&#039;&#039;Zugriff von FHEM und der HomeMatic-Software auf den HMLAN-Konfigurator ist nicht möglich, da letzterer nur eine Verbindung zulässt. Müssen oder wollen Sie temporär also z.B. mit der Windows-Software von HomeMatic zugreifen, ist FHEM zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
== Pairen von Geräten ==&lt;br /&gt;
Jedes HM Geräte muss vor Verwendung mit der HM-Zentrale, hier also dem HMLAN Konfigurator gepairt werden. Die Adresse der HM Geräte ist nicht frei wählbar, sondern fest in den Geräten eingestellt. Details zum Pairen hier: [[HomeMatic Devices pairen]]&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Die hexadezimale Adresse sollte in der &#039;&#039;fhem.cfg&#039;&#039;in Großbuchstaben eingegeben werden, da der HMLAN-Konfigurator seine eigene Adresse ebenfalls in Großbuchstaben zurück gibt.&lt;br /&gt;
&#039;&#039;HMLAN.pm&#039;&#039;überprüft alle 30 Sekunden, ob die Adresse des HMLAN-Konfigurators von der in FHEM eingestellten abweicht und setzt sie ggf. neu. &#039;&#039;HMLAN.pm&#039;&#039;in Versionen vor Februar 2012 unterscheidet zwischen Upper- und Lowercase, sodass z.b. 123abc für &#039;&#039;HMLAN.pm&#039;&#039;eine andere Adresse als 123ABC ist. Dies führt zum Neusetzen der an sich gleichen Adresse alle 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Selten lehnt der HMLAN-Konfigurator ohne erkennbaren Grund nach monatelangem störungsfreien Betrieb die Verbindung ab:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Opening HMLAN1 device 192.168.168.60:1000&lt;br /&gt;
192.168.168.60:1000 connection refused&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der HMLAN-Konfigurator kann aber über die mitgelieferte Konfigurationssoftware problemlos erreicht werden. Der Zustand lässt sich auch durch einen Reboot des HMLAN-Konfigurators (oder FHEM) nicht beheben, wohl aber durch eine Aktualisierung der Firmware des HMLAN-Konfigurator, selbst wenn die installierte Version aktuell ist.&lt;br /&gt;
&lt;br /&gt;
== Wechsel von CUL zu HMLAN ==&lt;br /&gt;
Sollten Sie bisher ein [[CUL]] für Ihre Homematic-Geräte eingesetzt haben und jetzt einen Wechsel auf den HMLAN Konfigurator planen, hält sich der Umstiegsaufwand in Grenzen:&lt;br /&gt;
&lt;br /&gt;
* deaktivieren Sie das CUL in der &#039;&#039;fhem.cfg&#039;&#039;.&lt;br /&gt;
* konfigurieren Sie den HMLAN Konfigurator &#039;&#039;&#039;von Hand&#039;&#039;&#039; direkt unterhalb der alten CUL-Definition in der &#039;&#039;fhem.cfg&#039;&#039; und zwar &#039;&#039;&#039;vor&#039;&#039;&#039; allen referenzierten HM Geräten (&amp;quot;save&amp;quot; nicht vergessen). Falls Sie den HMLAN von FHEM automatisch erkennen und anlegen lassen, dann wird dieser in der &#039;&#039;fhem.cfg&#039;&#039; &#039;&#039;&#039;nach&#039;&#039;&#039; den HM-Geräten angelegt und es kann keine Zuweisung der Geräte vorgenommen werden.&lt;br /&gt;
** der HMLAN &#039;&#039;&#039;muss&#039;&#039;&#039; die gleiche &#039;&#039;hmID&#039;&#039; wie das bisherige CUL erhalten (ansonsten müssen alle Geräte neu gepairt / angelernt werden).&lt;br /&gt;
** AES muss im HMLAN abgeschaltet werden (das CUL arbeitet auch ohne).&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; verbinden Sie den HMLAN Konfigurator mit ihrem Netzwerk und ziehen das CUL aus der USB-Buchse.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; geben Sie in der FHEM-Befehlszeile &#039;&#039;shutdown restart&#039;&#039;gefolgt von &amp;amp;lt;Enter&amp;amp;gt; (nicht &amp;quot;save&amp;quot;) ein (evtl. reicht auch ein &#039;&#039;rereadcfg&#039;&#039;).&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; kontrollieren Sie im Event-Monitor und in den HM-Device-Logs von FHEM die Kommunikation.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Bitte beachten: Falls man dem CUL keine explizite hmID per Attribut zugewiesen hat, wird diese ID aus &amp;quot;F1&amp;amp;lt;housecode&amp;amp;gt;&amp;quot; zusammengebaut. Die hmID muss man auf dem HMLAN explizit setzen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Details zu HMs &amp;quot;[[AES Encryption]]&amp;quot;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=1%25_Regel&amp;diff=1244</id>
		<title>1% Regel</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=1%25_Regel&amp;diff=1244"/>
		<updated>2013-05-10T20:55:17Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= 1% Relative Frequenzbelegungsdauer = Die Bundesnetzagentur schreibt für die Nutzung verschiedener ansonsten frei nutzbarer Frequenzbereiche sogenannte maxim…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1% Relative Frequenzbelegungsdauer =&lt;br /&gt;
Die Bundesnetzagentur schreibt für die Nutzung verschiedener ansonsten frei nutzbarer Frequenzbereiche sogenannte maximale relative Frequenzbelegungsdauern fest. Sinn dieser Maßnahme ist es, die Nutzung der Frequenzbänder durch mehrere Nutzer auch bei Reichweitenüberlagerung zu ermöglichen. Für 868,35&amp;amp;#160;MHz, also der Frequenz, in dem das HM, FS20 und FHT System arbeitet, sind ≤ 1% vorgeschrieben. Dies ergibt 36 Sekunden Sendedauer je Stunde. Besonders bei der eher langsamen Datenübertragung der FHT und FS20 Protokolle kann es zu Engpässen kommen.&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
Um einen Kommunikationskanal durch mehrere Teilnehmer effektiv zu nutzen, bieten sich mehrere Verfahren an. Im Wesentlichen sind dies:&lt;br /&gt;
&lt;br /&gt;
* Token Verfahren. Senden darf nur, wer gerade eine von Teilnehmer zu Teilnehmer herumgereichtes &amp;quot;Pfand&amp;quot; (=Token) besitzt. Tokenverfahren sind aufwändig zu implementieren und erfordern bidirektionale Kommunikation.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; LBT Verfahren. Senden darf ein Teilnehmer nur, wenn er sich vorher durch &amp;quot;lauschen&amp;quot; vergewissert hat, dass sonst niemand sendet, der Kanal also frei ist. (LBT = Listen before talk). Es ist theoretisch jedoch denkbar, dass zwei Sender zugleich lauschen, den Kanal frei vorfinden und zugleich anfangen zu senden. LBT Verfahren sind in frei nutzbaren Kanälen mit vielen Teilnehmern schwierig zu implementieren. (Die Kommunikation zwischen [[RFR CUL]] arbeitet aber z.b. nach diesem Verfahren.) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Zeitbeschränkung. Jeder Teilnehmer darf nur sehr kurz senden. Die Sendedauer ist so zu wählen, dass jeder Teilnehmer eine signifikante Chance hat, zufällig auf einen freien Kanal zu treffen. Dies ist beispielsweise gegeben, wenn der Kanal zu 90 oder mehr Prozent frei ist.&lt;br /&gt;
&lt;br /&gt;
Bei LBT und Zeitbeschränkung sind außerdem Verfahren zu implementieren, die greifen wenn der Kanal nicht frei war, die Aussendung also durch Überlagerung einer anderen Sendung gestört wurde. In der Regel wird man den erfolglosen Sendeversuch nach einer zufälligen Zeit wiederholen.&lt;br /&gt;
&lt;br /&gt;
Die Verfahren sind in der obigen Reihenfolge weniger aufwändig zu implementieren, d.h. Zeitbeschränkung erfordert den geringsten Aufwand.&lt;br /&gt;
&lt;br /&gt;
Die Bundesnetzagentur schreibt vor, dass im Frequenzbereich von 868,000 bis 868,600&amp;amp;#160;MHz 1% &amp;quot;Duty cycle&amp;quot; ODER die Nutzung von LBT-Verfahren implementiert sind, wobei sie definiert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&#039;&#039;Die relative Frequenzbelegungsdauer (duty cycle) in&amp;amp;#160;% kennzeichnet die Dauer der Aussendungen eines Senders auf einer Frequenz bezogen auf 1 Stunde. Die Gesamtsendezeit kann auf mehrere Intervalle aufgeteilt werden.&#039;&#039;&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&#039;&#039;LBT: Verfahren, mit dem die Kanalbelegungssituation vor Beginn und während der Aussendung geprüft wird. Aussendung erfolgt nur bei freiem Kanal.&#039;&#039;&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Zumindest wegen des geringen Implementierungsaufwandes hat ELV als Entwickler der FS20 / FHT Funkkomponenten kein LBT verwendet, sondern beachtet vielmehr die maximale Frequenzbelegungsdauer.&lt;br /&gt;
&lt;br /&gt;
== Bedeutung für das FS20 / FHT Funksystem ==&lt;br /&gt;
Aus der relativen Frequenzbelegungsdauer von 1% je Stunde, also nur 36 Sekunden je Stunde, ergeben sich für das FS20 / FHT System deutliche Einschränkungen. Insbesondere ist die [[Maximal nutzbare Geräte]] stark eingeschränkt. Wegen der umfangreichen bidirektionalen Kommunikation zwischen Raumreglern und der Zentrale mit einer im Vergleich zu HomeMatic eher geringen Bandbreite lassen sich beispielsweise sinnvoll nur etwa 10-12 Räume mit FHT über Funk steuern. &lt;br /&gt;
&lt;br /&gt;
Problematisch kann die 1% Regel auch in Debuggingphasen sein, wenn also neue FHEM Konfigurationen mehrfach in kurzer Folge ausprobiert werden.&lt;br /&gt;
&lt;br /&gt;
Praktisch umgesetzt ist das 1% Sendelimit z.b. im [[LOVF]] (= Limit-overflow). Eine FS20 Übertragung benötigt mindestens ca. 220ms also ca. 22 Sendeeinheiten. Ist die maximale Frequenzbelegungsdauer erreicht, dauert es also mindestens 22 Sekunden, bis erstmals wieder gesendet werden kann. &lt;br /&gt;
&lt;br /&gt;
Daraus ergibt sich, dass maximal 163 FS20 Kommandos pro Stunde gesendet werden können. Wird dieser Wert überschritten, meldet FHEM &#039;&#039;&#039;CUL TRANSMIT LIMIT EXCEEDED&#039;&#039;&#039;. Eine weitere Schaltung von FS20 Komponenten ist dann nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
HomeMatic verwendet eine höhere Datenübertragungsrate, sodass die Kommunikation wesentlich schneller abläuft und die Grenzen wesentlich weiter sind.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Bundesnetzagentur [http://www.bundesnetzagentur.de/cae/servlet/contentblob/134184/publicationFile/2570/FundstelleId5772pdf.pdf [1]]Vfg. 20 / 2006&lt;br /&gt;
[http://www.bundesnetzagentur.de/cae/servlet/contentblob/38206/publicationFile/2580/ShortRangeDevicesSRD_ID17299pdf.pdf [2]]Vfg 30 / 2006 geändert mit Vfg. 39/2009&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=OWServer_%26_OWDevice&amp;diff=1243</id>
		<title>OWServer &amp; OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=OWServer_%26_OWDevice&amp;diff=1243"/>
		<updated>2013-05-10T20:55:14Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Einleitung:&amp;#039;&amp;#039;&amp;#039; Bei OWServer handelt es sich um eine 1-Wire Server Komponente und bei OWDevice um eine Geräte-Komponente, welche die angeschlossenen Module …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Einleitung:&#039;&#039;&#039;&lt;br /&gt;
Bei OWServer handelt es sich um eine 1-Wire Server Komponente und bei OWDevice um eine Geräte-Komponente, welche die angeschlossenen Module definiert-&lt;br /&gt;
Die Module benötigen die Serverkomponente von [http://www.owfs.org OWFS].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&lt;br /&gt;
Die Module sind eine eigenständige Möglichkeit, den 1-Wire Bus anzusteuern und kommen ohne die Module aus, deren Namen aus Großbuchstaben bestehen (wie OWX, OWSWITCH, OWTHERM, etc.). &lt;br /&gt;
Umgekehrt können die Module OWX, OWSWITCH, OWTHERM, etc. auch mit dem Backendmodul OWServer zusammenarbeiten, siehe dazu die commandref der betreffenden Module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorbereitung:&#039;&#039;&#039;&lt;br /&gt;
Wie oben erwähnt, setzt OWServer/OWDevice auf OWFS auf. Dazu ist eine funktionierende OWFS Installation notwendig. Die Installation ist auf der selben Plattform (Debian-based) möglich oder auch Remote (zBsp Dockstar oder RPi). Eine gute [http://owfs.org/index.php?page=standard-devices Liste der Standard Devices]auf der Homepage von OWFS einzusehen. Nicht alle Standard Devices sind in OWDevice verfügbar (siehe unten).Wenn OWFS funktioniert kann&#039;s weiter gehen...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;owfs Pakete installieren&#039;&#039;&#039;&lt;br /&gt;
1)entweder sind die Pakete bereits vorpaketiert und man muss nur das [http://owfs.davromaniak.eu/ Repository] noch in /etc/apt/sources.list eintragen&lt;br /&gt;
&lt;br /&gt;
2)oder man muss selber kompilieren ([http://www.navitron.org.uk/forum/index.php?topic=12604.msg151750#msg151750 Quelle]). &lt;br /&gt;
Für den RaspberryPi wurde dies schon durchgeführt: [http://forum.fhem.de/index.php?t=getfile&amp;amp;amp;id=2742&amp;amp;amp;rid=118 owfs_2.8p17-1_all.zip ]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install automake autoconf autotools-dev gcc g++ libtool libusb-dev fuse-utils libfuse-dev swig python-dev tcl-dev php5-dev&lt;br /&gt;
sudo apt-get install git git-buildpackage dh-make quilt php5-cli&lt;br /&gt;
git clone [git://git.debian.org/collab-maint/owfs.git git://git.debian.org/collab-maint/owfs.git] git&lt;br /&gt;
git-buildpackage -uc -us&lt;br /&gt;
cd ..&lt;br /&gt;
sudo dpkg -i ./owserver_2.8p7+cvs20110310-1_i386.deb ./libow-2.8-7_2.8p7+cvs20110310-1_i386.deb ./owfs-common_2.8p7+cvs20110310-1_all.deb&lt;br /&gt;
sudo dpkg -i ./owhttpd_2.8p7+cvs20110310-1_i386.deb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
diese Pakete werden alle gebaut:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;libow-2.8-7_2.8p7+cvs20110310-1_i386.deb   owfs-common_2.8p7+cvs20110310-1_all.deb&lt;br /&gt;
libowcapi-2.8-7_2.8p7+cvs20110310-1_i386.deb owfs-dbg_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libow-dev_2.8p7+cvs20110310-1_i386.deb    owfs-doc_2.8p7+cvs20110310-1_all.deb&lt;br /&gt;
libownet-2.8-7_2.8p7+cvs20110310-1_i386.deb  owfs-fuse_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libownet-dev_2.8p7+cvs20110310-1_i386.deb   owftpd_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libownet-perl_2.8p7+cvs20110310-1_all.deb   owhttpd_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libownet-php_2.8p7+cvs20110310-1_all.deb   owserver_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libow-perl_2.8p7+cvs20110310-1_i386.deb    ow-shell_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libow-php5_2.8p7+cvs20110310-1_i386.deb    python-ow_2.8p7+cvs20110310-1_i386.deb&lt;br /&gt;
libow-tcl_2.8p7+cvs20110310-1_i386.deb    python-ownet_2.8p7+cvs20110310-1_all.deb&lt;br /&gt;
owfs_2.8p7+cvs20110310-1_all.deb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unterstütze Geräte:&#039;&#039;&#039;&lt;br /&gt;
Eine aktuelle Liste der von OWDevice unterstützen Geräte findet man im [http://fhem.de/commandref.html#OWDevice FHEM-Commandref].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Konfiguration in FHEM:&#039;&#039;&#039;&lt;br /&gt;
Als erstes definiert man OWServer. Hiermit wird ein logischer OWServer definiert, auf welchem OWFS installiert ist&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; OWServer &amp;amp;lt;protocol&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;amp;lt;protocol&amp;amp;gt; hat das Format &amp;amp;lt;hostname&amp;amp;gt;:&amp;amp;lt;port&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
zBsp:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define myOWServer OWServer 192.168.14.100:4304&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
oder wenn sich OWFS auf dem gleichen Server befindet wie FHEM:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define myOWServer OWServer localhost:4304&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach erfolgreichem &amp;quot;define&amp;quot; ist ein Klick auf den &amp;quot;Save&amp;quot; Button notwenig. Wenn nun der Status von myOWServer auf &amp;quot;Initialized&amp;quot; steht, ist der Server verbunden. Um sicher zu sein, dass der OWServer funktioniert, kann eine manuelle Abfrage der Device durchgeführt werden mit:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get myOWServer devices&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Danach werden sämtliche angeschlossene Geräte angezeigt, inkl. Busmaster&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OWServer Set Befehle:&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;amp;lt;name&amp;amp;gt; &amp;amp;lt;value&amp;amp;gt;&lt;br /&gt;
value:&lt;br /&gt;
timeout/directory&lt;br /&gt;
timeout/ftp&lt;br /&gt;
timeout/ha7&lt;br /&gt;
timeout/network&lt;br /&gt;
timeout/presence&lt;br /&gt;
timeout/serial&lt;br /&gt;
timeout/server&lt;br /&gt;
timeout/stable&lt;br /&gt;
timeout/uncached&lt;br /&gt;
timeout/usb&lt;br /&gt;
timeout/volatile&lt;br /&gt;
timeout/w1&lt;br /&gt;
units/pressure_scale&lt;br /&gt;
units/temperature_scale&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Weitere Informationen zu den Set Befehlen sind im [http://owfs.org/uploads/owserver.1.html#sect41 OWServer Manual] zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OWServer Get Befehle:&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get &amp;amp;lt;name&amp;amp;gt; &amp;amp;lt;value&amp;amp;gt;&lt;br /&gt;
value:&lt;br /&gt;
/settings/timeout/directory&lt;br /&gt;
/settings/timeout/ftp&lt;br /&gt;
/settings/timeout/ha7&lt;br /&gt;
/settings/timeout/network&lt;br /&gt;
/settings/timeout/presence&lt;br /&gt;
/settings/timeout/serial&lt;br /&gt;
/settings/timeout/server&lt;br /&gt;
/settings/timeout/stable&lt;br /&gt;
/settings/timeout/uncached&lt;br /&gt;
/settings/timeout/usb&lt;br /&gt;
/settings/timeout/volatile&lt;br /&gt;
/settings/timeout/w1&lt;br /&gt;
/settings/units/pressure_scale&lt;br /&gt;
/settings/units/temperature_scale&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Zusätzlich stehen die FHEM-internen Befehle &amp;quot;errors&amp;quot; und &amp;quot;devices&amp;quot; zur Verfügung.&lt;br /&gt;
zBsp:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;get &amp;amp;lt;Devicename&amp;amp;gt; errors #listet die Fehler des Device auf&lt;br /&gt;
get &amp;amp;lt;Devicename&amp;amp;gt; devices #scan den Server nach Device&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Angeschlossene Geräte auslesen:&#039;&#039;&#039;&lt;br /&gt;
Grundsätzlich werden die am Busmaster von OWFS angeschlossenen 1-Wire Geräte durch aktives autocreate nach einem Neustart (erfordert shutdown restart) selber in FHEM definiert.&lt;br /&gt;
Der Busmaster (zBsp ein DS9490r) selbst wird ebenfalls eingelesen und angezeigt.&lt;br /&gt;
&lt;br /&gt;
Definition von Geräten:&lt;br /&gt;
Es ist auch möglich, Geräte manuell anzulegen. Dies erfolgt in folgendem Format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; OWDevice &amp;amp;lt;address&amp;amp;gt; [&amp;amp;lt;interval&amp;amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
zBsp:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Vorlauftemp OWDevice 28.334F2B040000 60&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wobei der Wert 60 als Abfrageintervall in Sekunden zu verstehen ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OWDevice State:&#039;&#039;&#039;&lt;br /&gt;
Bei Temperaturfühler wie DS18S20 wird das Reading &amp;quot;state&amp;quot; wie folgt ausgegeben:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;temperature: 56.1875 alarm: 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um die Temperatur wie bei anderen Temperatur-Sensoren (zBsp. CUL_WS) anzuzeigen, hilft das Attribut &amp;quot;stateFormat&amp;quot;. Dies kann wie folgt definiert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Devicename&amp;amp;gt; stateFormat T: &amp;amp;lt;wert&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
zBsp:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Boiler stateFormat T: temperature&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
alternativ&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Devicename&amp;amp;gt; stateFormat {sprintf(&amp;quot;%.1f&amp;quot;,ReadingsVal(&amp;quot;&amp;amp;lt;Devicename&amp;amp;gt;&amp;quot;,&amp;quot;temperature&amp;quot;,0)).&amp;quot;°C&amp;quot;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Zusätzlich rundet das obenstehende Attribut mit &amp;quot;%.1f&amp;quot; die Temperatur auf eine Kommastelle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tips und Tricks&#039;&#039;&#039;&lt;br /&gt;
1-wire-Geräte sind häufig generische Geräte, wie Zähler und Spannungsmesser (A/D-Wandler), an denen Sensorik hängt. Die rohen Werte vom 1-wire-Gerät (Zählimpulse, Spannungen) sind dann noch in menschenlesbare Werte zu verwandeln. Hier helfen userReadings, z.B.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr myEnergyMeter userReadings energy { (ReadingsVal(&amp;quot;myEnergyMeter&amp;quot;,&amp;quot;count.A&amp;quot;,0)+AttrVal(&amp;quot;myEnergyMeter&amp;quot;,&amp;quot;myBasis&amp;quot;,0))/1250.0;; }&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EIB_/_KNX&amp;diff=1242</id>
		<title>EIB / KNX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EIB_/_KNX&amp;diff=1242"/>
		<updated>2013-05-10T20:55:03Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Fhem kann auch Geräte über EIB bzw KNX steuern.  &amp;#039;&amp;#039;&amp;#039;Hinweis&amp;#039;&amp;#039;&amp;#039;: Obwohl hier explizit ein Raspberry Pi verwendet wird, sollte die Ableitung für jedes Debian-…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fhem kann auch Geräte über EIB bzw KNX steuern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Obwohl hier explizit ein Raspberry Pi verwendet wird, sollte die Ableitung für jedes Debian-Basierte (also auch Ubuntu) anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
Zu diesem Zweck habe ich mir einen Raspberry Pi und einen TUL ([http://busware.de/tiki-index.php?page=TUL http://busware.de/tiki-index.php?page=TUL]) besorgt.&lt;br /&gt;
Der TPUART ist ein Baustein, der die Verbindung zwischen dem EIB und einer seriellen Schnittstelle herstellt. In dem USB TUL ist dem TPUART ein Microcontroller vorgeschaltet, der eine Wandlung von USB nach seriell vornimmt.&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
Der TUL wird ohne Firmware ausgeliefert und muss entsprechend vor der ersten Benutzung programmiert werden. Dies kann direkt über den Raspberry Pi geschehen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install dfu-programmer&lt;br /&gt;
wget -O TPUARTtransparent.hex [http://busware.de/tiki-download_file.php?fileId=54 http://busware.de/tiki-download_file.php?fileId=54]&lt;br /&gt;
sudo dfu-programmer atmega32u4 erase&lt;br /&gt;
sudo dfu-programmer atmega32u4 flash TPUARTtransparent.hex&lt;br /&gt;
sudo dfu-programmer atmega32u4 reset&lt;br /&gt;
sudo reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Raspberry Pi wird wie auf [http://www.fhemwiki.de/wiki/Kategorie:Raspberry_Pi http://www.fhemwiki.de/wiki/Kategorie:Raspberry_Pi] beschrieben vorbereitet.&lt;br /&gt;
&lt;br /&gt;
Den TUL kann man wohl per eibd oder direkt einbinden. Die direkte Einbindung erfolgt über ein&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define EIB TUL tul:/dev/ttyACM0@57600 1.1.255&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
in der fhem.cfg . Der letzte Parameter ist die EIB-Adresse unter der sich der TUL einbucht. Somit sollte es eine freie Adresse sein.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall ist die Adresse in der Punkt-Notation angegeben. Die Fhem versteht diese Notation, verwendet aber meist folgende Notation:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;abcc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wobei a und b hexadezimale Werte von 0-f und cc hexadezimale Werte von 0-255 einnehmen können. Dies entspricht dann der Adresse&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;a.b.cc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
genaueres kann man in der Dokumentation unter [http://fhem.de/commandref.html#EIB http://fhem.de/commandref.html#EIB] nachlesen.&lt;br /&gt;
&lt;br /&gt;
== Inbetriebnahme ==&lt;br /&gt;
Jetzt ist es Zeit das Web-Interface von Fhem aufzurufen. Der RaspberryPi sollte jetzt schon im eigenen Intranet unter [http://raspberrypi:8083/ http://raspberrypi:8083/] erreichbar sein. Durch das autocreate feature kennt das System schon einige Geräte.&lt;br /&gt;
&lt;br /&gt;
=== Lampen ===&lt;br /&gt;
Wenn man nun mal alle Lichtschalter betätigt, kennt das System schon die Adressen der im EIB eingebundenen Lampen. Diese sind die einfachsten Geräte im Fhem - sie lassen sich sofort über das Webinterface steuern. Über das Attribut &amp;quot;Raum&amp;quot; können die Lampen den verschiedenen Räumen zugeordnet werden, wobei das Interface nur ein Dropdown mit den schon bekannten Räumen anbietet - also erstmal nicht brauchbar ist&amp;amp;#160;:-(&lt;br /&gt;
&lt;br /&gt;
Die Lösung besteht darin die &amp;quot;attr&amp;quot;-Zeile im Interface in das obere Eingabefeld abzutippen - also z.B.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr EIB_abcd room Wohnzimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und anschliessend &#039;&#039;&#039;die Eingabetaste drücken&#039;&#039;&#039;. Der &amp;quot;save&amp;quot; Button neben dem Eingabefeld führt nicht zum gewünschten Ergebnis. Er scheint dem Festschreiben der neuen Konfiguration in der fhem.cfg zu dienen und sollte somit ab und zu betätigt werden.&lt;br /&gt;
&lt;br /&gt;
Nach dieser Eingabe taucht der neue Raum auch im entsprechenden Dropdown auf.&lt;br /&gt;
&lt;br /&gt;
Den kryptischen Namen der Lampe ändert man auf gleichem Weg über die Eingabe von&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;rename EIB_abcd wohnzimmer.deckenleuchte&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Auch hier ein Achtung: der Name aller Objekte muss in Fhem eindeutig sein. Eine Bezeichnung &#039;deckenleuchte&#039; wird es für mehrere Räume geben und reicht somit nicht aus.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensoren ===&lt;br /&gt;
Definiert werden die Sensoren zunächst wie die Lampen. Damit das System allerdings weiss, dass sie als Temperatur angezeigt werden sollen, muss noch ein&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;name temp sensor&amp;amp;gt; model tempsensor&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
gesetzt werden. Für Heizungsventile gilt das gleiche, nur dass man dem System hier sagen muss, dass es sich um einen Prozent-Wert handelt. Je nach Information entweder&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;name ventil&amp;amp;gt; model percent&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;name ventil&amp;amp;gt; model percent255 (noch nicht von mir getestet)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um zu verhindern, dass Fhem für diese Sensoren Schaltflächen anzeigt, kann man &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;name sensor&amp;amp;gt; dummy 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
setzen. Achtung: sollte für dieses Element schon ein webCmd gesetzt sein, werden die Schaltschlächen _nicht_ deaktiviert.&lt;br /&gt;
&lt;br /&gt;
=== Tipps ===&lt;br /&gt;
Die Fhem Kommandos unterstützen anscheinend reguläre Ausdrücke. Hat man z.B. viele Temperatursensoren mit dem Namen &amp;quot;ist.&amp;amp;lt;raum&amp;amp;gt;&amp;quot; angelegt und möchte ihnen nun das attribut &amp;quot;dummy&amp;quot; setzen, kann man das mit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr ist.* dummy 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
vereinfachen.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=1241</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=1241"/>
		<updated>2013-05-10T20:55:03Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Damit das Kennwort verschlüsselt übertragen wird, ist eine HTPPS Verbindung wichtig.  Zunächst müssen folgende Pakete nachinstalliert werden:   &amp;lt;nowiki&amp;gt;sud…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Damit das Kennwort verschlüsselt übertragen wird, ist eine HTPPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install perl-io-socket-ssl&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss im modpath Verzeichnis (Das liegt beim RPi unter /usr/share/fhem/certs/) das Verzeichnis &amp;quot;certs&amp;quot; erstellt werden. In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Unter Linux und MacOSX kommen wir über das Terminal an die Dateien.&lt;br /&gt;
&lt;br /&gt;
Im Terminal und Linux/OSX geht dies mit folgendem Befehl:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ihr könnt mit dem Terminal auch direkt in das modpath und mit mkdir certs und cd certs das Verzeichnis erstellen. Oder einfach die Dateien irgendwo erstellen und mit dem Finder oder Windows Explorer dort hin kopieren.&lt;br /&gt;
&lt;br /&gt;
Anschließend in FHEM mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB HTTPS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Für das Smartphone Interface entsprechend&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEBphone HTTPS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
HTTPS aktivieren, nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem] . Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=%C3%96lverbrauchsanzeige_/_Betriebsstundenz%C3%A4hler&amp;diff=1240</id>
		<title>Ölverbrauchsanzeige / Betriebsstundenzähler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=%C3%96lverbrauchsanzeige_/_Betriebsstundenz%C3%A4hler&amp;diff=1240"/>
		<updated>2013-05-10T20:55:03Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Problem: oft weiß man nicht wie viel Öl man tatsächlich verbraucht und welche Veränderungen an der Heizungen welche Auswirkungen haben. Die Lösung: eine …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Problem: oft weiß man nicht wie viel Öl man tatsächlich verbraucht und welche Veränderungen an der Heizungen welche Auswirkungen haben.&lt;br /&gt;
Die Lösung: eine Ölverbrauchsanzeige direkt in FHEM.&lt;br /&gt;
Hierfür habe ich ein Relais (Finder 55.34.8.230.0040 [http://www.elv.de/elv-fs20-kse-funk-klingelsignal-erkennung.html ELV] angeschlossen. So dass wenn der Brenner einschaltet sich der Kontakt am anderen ende öffnet, dadurch kein Strom mehr zum KSE fließt und der dann &amp;quot;on&amp;quot; an FHEM sendet. Logischerweise hätte ich gedacht es muss so angeschlossen, dass Strom zum KSE fließt wenn der Brenner an ist, dies hat aber nicht funktioniert, daher andersrum. Das Relais ist ein Wechsler, daher kein Problem.&lt;br /&gt;
FHEM erstellt durch autocreate automatisch ein neues Device, definiert sieht es bei mir so aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define fs_boiler FS20 1be4 00&lt;br /&gt;
attr fs_boiler devStateIcon on:HeizungOn off:HeizungOff&lt;br /&gt;
attr fs_boiler dummy 1&lt;br /&gt;
attr fs_boiler eventMap on:off off:on&lt;br /&gt;
attr fs_boiler icon icoHEIZUNG&lt;br /&gt;
attr fs_boiler model fs20kse&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der entsprechende Plot:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_fs_boiler FileLog ./log/fs_boiler-%Y.log fs_boiler&lt;br /&gt;
attr FileLog_fs_boiler logtype fs20:Window,text&lt;br /&gt;
define weblink_fs_boiler weblink fileplot FileLog_fs_boiler:fs20:CURRENT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Icons für die Heizung habe ich irgendwo aus dem Forum, weiß allerdings nicht mehr welcher Thread.&lt;br /&gt;
&lt;br /&gt;
So, nun wird zumindest schonmal dargestellt wann die Heizung an oder aus ist.&lt;br /&gt;
Um den Ölverbauch zu messen werden einige weitere Codes benötigt:&lt;br /&gt;
Zuerst ein Notify:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define boiler_consumption notify fs_boiler {\&lt;br /&gt;
  if(&amp;amp;quot;%&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;) {\&lt;br /&gt;
   $data{boiler_last} = time();;\&lt;br /&gt;
  } elsif(&amp;amp;quot;%&amp;amp;quot; eq &amp;amp;quot;off&amp;amp;quot;) {\&lt;br /&gt;
   $data{boiler_min} = (time()-$data{boiler_last})/60*0.03626;;\&lt;br /&gt;
   fhem &amp;amp;quot;trigger boiler_consumption $data{boiler_min}&amp;amp;quot;;;\&lt;br /&gt;
  }\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieser berechnet aus der Differenz zwischen on und off Minutengenau den Verbrauch. Hierfür muss man wissen welche Düse verbaut ist und was für einen Durchsatz sie hat. Unsere hat 2,5kg/Stunde Durchsatz (steht auf der Düse) dies habe ich in Liter umgerechnet (laut Wikipedia besitzt Heizöl eine Dichte von 0,820–0,860 kg/l [http://de.wikipedia.org/wiki/Heizöl [1]]) und dies anschließend durch 60 geteilt um es als Liter/Minute darzustellen. Daher kommt der Wert 0.03626 im Notify.&lt;br /&gt;
Hierzu nun der Log und Plot:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define boiler_log FileLog ./log/boiler-%Y-%m.log boiler_consumption&lt;br /&gt;
define Oilconsumption weblink fileplot boiler_log:oil:CURRENT&lt;br /&gt;
attr Oilconsumption label sprintf(&amp;amp;quot;Consumption (l) today:&amp;amp;#160;%.2f total&amp;amp;#160;%.2f avg/h&amp;amp;quot;, $data{sum1}, ($data{sum1}/$hour))&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Gplot-Syntax folgt gleich. Zuerst eine kurze Erklärung. Ich lasse im Label den Tagesverbrauch auf 2 Nachkommastellen gerundet sowie den aktuellen Durschnittsverbrauch Anzeigen. Leider funktioniert der Durschnittsverbrauch nur für den aktuellen Tag und nicht für vorherige, da immer durch die Aktuelle Stunde geteilt wird, bei vorherigen Tagen müsste aber durch 24 geteilt werden. Habe ich noch nicht geschafft.&lt;br /&gt;
Die gplot für den Plot:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############################&lt;br /&gt;
# Display the oil consumption.&lt;br /&gt;
# 2012-12-24_14:48:31 boiler_consumption 0.2634893333&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;amp;quot;Oilconsumption (l)&amp;amp;quot;&lt;br /&gt;
set ylabel &amp;amp;quot;Oilconsumption (l)&amp;amp;quot;&lt;br /&gt;
#FileLog 3::0:&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:3 title &#039;Oilconsumption (l)&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das wärs für die Verbrauchsanzeige. Das meiste hiervon basiert auf verschiedene Beiträge aus dem Forum und google-groups.&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle oder Alternativ kann man auch einen Betriebsstundenzähler programmieren:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define boiler_time notify fs_boiler {\&lt;br /&gt;
  if(&amp;amp;quot;%&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;) {\&lt;br /&gt;
   $data{boiler_last} = time();;\&lt;br /&gt;
  } elsif(&amp;amp;quot;%&amp;amp;quot; eq &amp;amp;quot;off&amp;amp;quot;) {\&lt;br /&gt;
   $data{boiler_min} = (time()-$data{boiler_last})/60;;\&lt;br /&gt;
   fhem &amp;amp;quot;trigger boiler_time $data{boiler_min}&amp;amp;quot;;;\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
define boiler_time_log FileLog ./log/boiler_time-%Y-%m.log boiler_time&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier lasse ich nur ein Log schreiben, ich benötige kein Plot, müsste aber mit leichter Anpassung des oberen gplot-Syntaxes eicht zu bewerkstelligen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich binde ich noch eine Grafik mit dem Ölpreisverlauf direkt von Tecson ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Heizoel weblink image http://www.tecson.de/tl_files/pepesale/bilder_inhalt/_hoel.gif&lt;br /&gt;
attr Heizoel htmlattr width=&amp;amp;quot;551&amp;amp;quot; height=&amp;amp;quot;594&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zuhause-Status_per_WLAN_Anmeldung_(Fritzbox)&amp;diff=1239</id>
		<title>Zuhause-Status per WLAN Anmeldung (Fritzbox)</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zuhause-Status_per_WLAN_Anmeldung_(Fritzbox)&amp;diff=1239"/>
		<updated>2013-05-10T20:55:02Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Wer eine FritzBox für FHEM und als WLAN Access Point nutzt, kann die Anmeldung eines WLAN Gerätes (z. B. Smartphone) in FHEM als Trigger nutzen.  == fhem.cfg…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer eine FritzBox für FHEM und als WLAN Access Point nutzt, kann die Anmeldung eines WLAN Gerätes (z. B. Smartphone) in FHEM als Trigger nutzen.&lt;br /&gt;
&lt;br /&gt;
== fhem.cfg: ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define testwlan_at at +*00:01:00 trigger testwlan&lt;br /&gt;
define testwlan notify testwlan {my $aaa=&amp;quot;&amp;quot;;;\&lt;br /&gt;
 $aaa=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice&#039;&#039;&#039;X&#039;&#039;&#039;/active );;\&lt;br /&gt;
 $aaa=$aaa * 1;;\&lt;br /&gt;
 fhem &amp;quot;set ErwinatHome $aaa&amp;quot;;;}&lt;br /&gt;
define ErwinatHome dummy&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Kurze Erklärung: ==&lt;br /&gt;
* Jede Minute wird das Testwlan notify getriggert.&lt;br /&gt;
* im Testnotify wird ein FritzBox-ctlmgr Befehl abgesetzt, der entweder 0 oder 1 zurückliefert.&lt;br /&gt;
* Das Dummy device ErwinatHome bekommt im state 0 oder 1&lt;br /&gt;
=== Hilfe ===&lt;br /&gt;
Das &#039;&#039;&#039;X&#039;&#039;&#039;im &#039;&#039;&#039;landeviceX&#039;&#039;&#039;müsst ihr selbst herausfinden, welches WLAN Gerät bei euch welche Nummer hat.&lt;br /&gt;
Evtl. hilft zum herausfinden, welche Zahl für &#039;&#039;&#039;X&#039;&#039;&#039;die richtige ist, auf der FritzBox-Telnet Befehlszeile auch folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/usr/bin/ctlmgr_ctl r landevice settings/landeviceX/name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Eine gute Quelle für FB spezifische Info ist: [http://www.wehavemorefun.de/fritzbox/index.php/Ctlmgr_ctl http://www.wehavemorefun.de/fritzbox/index.php/Ctlmgr_ctl] AVM-Wiki&lt;br /&gt;
&lt;br /&gt;
Ich hab getestet mit FB7270, Feedback bestätigt, dass es auch mit FB7390 funktioniert&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Erwin111&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Erwin111 (Seite nicht vorhanden)&amp;quot;&amp;gt;Erwin111&amp;lt;/a&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zuhause-Status&amp;diff=1238</id>
		<title>Zuhause-Status</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zuhause-Status&amp;diff=1238"/>
		<updated>2013-05-10T20:55:00Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Abhängig davon, ob man sich zuhause aufhält, schläft oder ausser Haus ist, sollen Geräte unterschiedlich geschaltet werden.  Dabei sollen  # beim Statuswec…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abhängig davon, ob man sich zuhause aufhält, schläft oder ausser Haus ist, sollen Geräte unterschiedlich geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Dabei sollen&lt;br /&gt;
&lt;br /&gt;
# beim Statuswechsel (also &amp;quot;ich komme nach hause&amp;quot;, &amp;quot;ich gehe schlafen&amp;quot; etc) Geräte geschaltet werden&lt;br /&gt;
# regelmäßig geplante &amp;quot;at *&amp;quot; -Vorgänge ihr Verhalten auch davon abhängig machen, ob jemand zuhause ist oder nicht.&lt;br /&gt;
&lt;br /&gt;
Der Status kann z. B. per Schalter gesetzt werden.&lt;br /&gt;
Automatisiert geht das auch z. B. [[Zuhause-Status per WLAN Anmeldung (Fritzbox)]]&lt;br /&gt;
&lt;br /&gt;
== Lösungsansatz ==&lt;br /&gt;
Es wird eine Variable HomeStatus als dummy-device, also als Variable definiert.&lt;br /&gt;
&lt;br /&gt;
Desweiteren werden ein 4-Tasten-Wandschalter fs20-s4a und eine 4-Tasten-Fernbedienung fs20-s4 mit identischem Hauscode und Tastencodes versehen, die Tasten angelernt und benannt in HomeStat1, HomeStat2, HomeStat3, HomeStat4.&lt;br /&gt;
Der Wandschalter kommt neben die Wohnungstür, die Fernbedienung ans Bett.&lt;br /&gt;
&lt;br /&gt;
Beim Drücken dieser Tasten wird HomeStatus auf 1, 2, 3 oder 4 gesetzt. Ausserdem werden die gemäß dem neuen Status benötigten bzw. nicht mehr benötigten Geräte ein- oder ausgeschaltet:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;Bei Setzen von HomeStatus 1 (ich komme zuhause an)&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt; - Media an&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Heizung auf Tagtemperatur&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - WLAN an&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt; Bei Setzen von HomeStatus 2 (ich gehe schlafen)&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt; - Alle Lampen aus ausser Schlafzimmer&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Media aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Heizung auf Nachttemperatur&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - WLAN aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;Bei Setzen von HomeStatus 3 (verlassen der Wohnung für kurze Zeit)&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt; - Alle Lampen aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Media aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Heizung auf Nachttemperatur&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - WLAN aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;Bei Setzen von HomeStatus 4 (ich verlasse die Wohnung für längere Zeit)&lt;br /&gt;
&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt; - Alles aus&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - Heizung runterregeln auf &#039;Ferienprogramm&#039;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;dd&amp;gt; - WLAN aus &lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
Regelmäßig geschaltete Geräte berücksichtigen ebenfalls den HomeStatus, z.B. startet das Wakeuplight nur an Wochentagen und nur wenn ich zuhause bin, also der HomeStatus &amp;amp;lt; 3 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HomeStatus dummy&lt;br /&gt;
attr HomeStatus room Wohnung&lt;br /&gt;
define whg_HomeStat1 FS20 696c 00&lt;br /&gt;
define whg_HomeStat2 FS20 696c 01&lt;br /&gt;
define whg_HomeStat3 FS20 696c 02&lt;br /&gt;
define whg_HomeStat4 FS20 696c 03&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define Zuhause notify whg_HomeStat1 set HomeStatus 1;;trigger whg_Audio on;;set whg_WLAN,wz_MacMini on;;set ez_FHT desired-temp 21.0&lt;br /&gt;
define Schlafen notify whg_HomeStat2 set HomeStatus 2;;trigger whg_MediaAus off;;set ez_FHT desired-temp 19.0;;set ez_LichtAlle,wz_LichtAlle,ku_LichtAlle,whg_WLAN off&lt;br /&gt;
define KurzWeg notify whg_HomeStat3 set HomeStatus 3;;set ez_FHT desired-temp 18.5;;trigger whg_MediaAus off;;set whg_WLAN,Wohnung_Licht off&lt;br /&gt;
define LangeWeg notify whg_HomeStat4 set HomeStatus 4;;trigger whg_MediaAus off;;set Wohnung_Licht,whg_WLAN,wz_MacMini off;;set ez_FHT desired-temp 17.0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define wakeup at *07:00 {\&lt;br /&gt;
 {Log 3, (&#039;wakeupLOG WE:     &#039;.$we)}\&lt;br /&gt;
 {Log 3, (&#039;wakeupLOG HomeStatus: &#039;.(Value(&amp;quot;HomeStatus&amp;quot;)))}\&lt;br /&gt;
 if ((!$we) &#039;&#039;&#039;and (Value(&amp;quot;HomeStatus&amp;quot;) &amp;amp;lt; 3&#039;&#039;&#039;) {\&lt;br /&gt;
   {fhem(&amp;quot;define wakeup2 at +00:18:00 set sz_Stehlampe on&amp;quot;) }\&lt;br /&gt;
   {fhem(&amp;quot;define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off&amp;quot;) }\&lt;br /&gt;
   {fhem(&amp;quot;set sz_Leselampe dim100% 1280&amp;quot;) }\&lt;br /&gt;
   {Log 4, (&amp;quot;wakeupLOG: define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off&amp;quot;)}\&lt;br /&gt;
 }\&lt;br /&gt;
 else {\&lt;br /&gt;
 {Log 3, (&amp;quot;wakeupLOG: no wakeup today.&amp;quot;)}\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Weitere Beispiele ==&lt;br /&gt;
[[Wakeuplight]]&lt;br /&gt;
[[Licht bei Bedingungen einschalten]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Zeitschaltuhr&amp;diff=1237</id>
		<title>Zeitschaltuhr</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Zeitschaltuhr&amp;diff=1237"/>
		<updated>2013-05-10T20:54:58Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Anforderung == Eine Umwälzpumpe, die an einem FS20 Schalter hängt, soll zu bestimmten Tageszeiten alle 15 Minuten für jeweils 5 Minuten eingeschaltet wer…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anforderung ==&lt;br /&gt;
Eine Umwälzpumpe, die an einem FS20 Schalter hängt, soll zu bestimmten Tageszeiten alle 15 Minuten für jeweils 5 Minuten eingeschaltet werden - mit unterschiedlichen Zeiträumen je Wochentag.&lt;br /&gt;
&lt;br /&gt;
== Lösungsansatz 1 ==&lt;br /&gt;
Es wird der [http://fhem.de/commandref.html#at at-Befehl] verwendet.&lt;br /&gt;
&lt;br /&gt;
Täglich zur gewünschten Startzeit wird geprüft, ob die Voraussetzungen erfüllt sind. Ist dies der Fall, wird die Pumpe n mal alle 15 Minuten für 5 Minuten eingeschaltet.&lt;br /&gt;
Die jeweilige Laufzeit der Pumpe wird durch on-for-timer in Sekunden angegeben (300 Sekunden).&lt;br /&gt;
&lt;br /&gt;
* Täglich 17 Uhr bis 23 Uhr (6 Stunden = 24 Wiederholungen à 15 Minuten)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PumpeAbendsStart at *17:00:00 {&lt;br /&gt;
 { fhem(&amp;quot;define PumpeAbends at +*{24}00:15:00 set Umwaelzpumpe on-for-timer 300&amp;quot;) }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* An Wochentagen 7 Uhr bis 9 Uhr (8 Wiederholungen), an Wochenenden 7 Uhr bis 17 Uhr (36 Wiederholungen)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PumpeMorgensStart at *07:00:00 {&lt;br /&gt;
 if (!$we) {&lt;br /&gt;
   { fhem(&amp;quot;define PumpeMorgens at +*{8}00:15:00 set Umwaelzpumpe on-for-timer 300&amp;quot;) }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   { fhem(&amp;quot;define PumpeMorgens at +*{36}00:15:00 set Umwaelzpumpe on-for-timer 300&amp;quot;) }&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Lösungsansatz 2 ==&lt;br /&gt;
Es wird ein dauerhafter Prüflauf genutzt, der alle 15 Minuten prüft, ob der Zeitpunkt der Ausführung erreicht ist.&lt;br /&gt;
&lt;br /&gt;
* An Wochentagen 7 Uhr bis 9 Uhr&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define pumpe_wd78 at +*00:15 { fhem(&amp;quot;set Umwaelzpumpe on-for-timer 300&amp;quot;) if(!$we &amp;amp;amp;&amp;amp;amp; $hour&amp;amp;gt;=7 &amp;amp;amp;&amp;amp;amp; $hour&amp;amp;lt;9) }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Weitere Beispiele ==&lt;br /&gt;
[http://fhemwiki.de/wiki/AT_zu_einem_absoluten_Datum_ausführen AT-Beispiele]&lt;br /&gt;
&lt;br /&gt;
[http://fhemwiki.de/wiki/Wakeuplight Wakeup-Light]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wochenende,_Feiertage_und_Schulferien&amp;diff=1235</id>
		<title>Wochenende, Feiertage und Schulferien</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wochenende,_Feiertage_und_Schulferien&amp;diff=1235"/>
		<updated>2013-05-10T20:54:52Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „FHEM bietet mehrere Möglichkeiten, Komponenten in Abhängigkeit von Wochenenden, Feiertagen oder sogar Schulferien zu steuern.  Eine simple Rollladensteuerung…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FHEM bietet mehrere Möglichkeiten, Komponenten in Abhängigkeit von Wochenenden, Feiertagen oder sogar Schulferien zu steuern.&lt;br /&gt;
&lt;br /&gt;
Eine simple Rollladensteuerung um 7 Uhr morgens sieht beispielsweise wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define RolloHoch at *07:00 set Rollo hoch&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um am Wochenende (Samstag und Sonntag) länger schlafen zu können, kann diese Steuerung durch Nutzung der Variable &#039;&#039;$we&#039;&#039;erweitert werden. Diese hat am Wochenende den Wert &#039;&#039;1&#039;&#039;, an sonstigen Tagen den Wert &#039;&#039;0&#039;&#039;. In if-Abfragen wird die 0 als &#039;&#039;false/falsch&#039;&#039;interpretiert, andere numerische Werte als &#039;&#039;true/wahr&#039;&#039;. Man kann mittels &#039;&#039;if ($we)&#039;&#039;also ganz einfach prüfen, ob Wochenende ist und entsprechend steuern (oder auch nicht). Das o.a. Beispiel kann entsprechend ergänzt werden, so dass am Wochenende nicht um 7 Uhr das Rollo nach oben gefahren wird:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define RolloHoch at *07:00 { if (!($we)) { fhem(&amp;amp;quot;set Rollo hoch&amp;amp;quot;);; } }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das &#039;&#039;!&#039;&#039;in der if-Abfrage negiert den dahinter folgenden Ausdruck in der Klammer, quasi ein &amp;quot;ist nicht Wochenende&amp;quot;. Der Inhalt der äußeren geschweiften Klammern stellt echten Perl-Code dar (welche hinter jeder Anweisung gerne ein Semikolon stehen hat, welches in FHEM durch ein weiteres Semikolon [http://de.wikipedia.org/wiki/Maskierungszeichen maskiert/escaped] werden muss). Aus dem Perl-Code kann man mittels des Befehls &#039;&#039;fhem()&#039;&#039;wiederum FHEM-Code ausführen (hier der Befehl, um das Rollo nach oben zu fahren). Das (Doppel-)Semikolon ist in diesem Beispiel nicht zwingend notwendig, da es sich nur um eine einzige (und somit letzte) Anweisung handelt - man sollte sich jedoch aneignen, jede Anweisung im Perl-Code mit einem (Doppel-)Semikolon abzuschließen (eine schließende geschweifte Klammer stellt auch das Ende eine Anweisung bzw. eines Anweisungsblocks dar).&lt;br /&gt;
&lt;br /&gt;
Samstags und Sonntags bleibt das Rollo nun unten und man kann länger schlafen. Um diesen Komfort auch an Feiertagen zu haben, können in FHEM mittels &#039;&#039;holiday&#039;&#039;-Dateien Feiertage definiert werden. Sinnvollerweise erstellt man sich für sein jeweiliges Bundesland eine eigene Datei, welche Definitionen für feste Feiertage (z.B. Weihnachten oder der Tag der Deutschen Einheit) und solche in Abhängigkeit zu Ostern (z.B. Ostermontag oder Pfingsten, im Rheinland auch der Karneval) beinhaltet. Eine gutes Beispiel mit Erklärung findet sich in der [http://fhem.de/Heimautomatisierung-mit-fhem.pdf FHEM-Übersicht für Anfänger].&lt;br /&gt;
Nachdem beispielsweise die &#039;&#039;NRW_Feiertag.holiday&#039;&#039;Datei im FHEM-Ordner erstellt/abgelegt wurde, kann diese in die Konfiguration eingebunden werden. Mittels &#039;&#039;holiday2we&#039;&#039;können die darin definierten Feiertage mit der Variable &#039;&#039;$we&#039;&#039;&amp;quot;verheiratet&amp;quot; werden. &#039;&#039;if ($we)&#039;&#039;ist danach immer wahr, sobald Wochenende oder ein Feiertag ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global holiday2we NRW_Feiertag&lt;br /&gt;
define NRW_Feiertag holiday&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Theoretisch kann man in o.a. Datei auch seine persönlichen Urlaube oder die Schulferien definieren. Hier eignet sich jedoch die &#039;&#039;Calendar&#039;&#039;-Funktion wesentlich besser. V.a. die Schulferien der einzelnen Bundesländer sind im Internet (z.B. unter [http://www.schulferien.org schulferien.org]) als iCal-Datei verfügbar und können wie folgt in FHEM eingebunden werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NRW_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2013.ics 43200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Intervall von 43200 Sekunden (entspricht 12 Stunden) für die Aktualisierung der Schulferien sollte im Normalbetrieb mehr als ausreichen. Wenn eigene Kalender (z.B. bei Google) für Urlaubstage genutzt werden, muss man individuell abwägen, wie oft dieser aktualisiert werden soll.&lt;br /&gt;
&lt;br /&gt;
Um nun diesen Kalender nun nutzen zu können, benötigt FHEM einen &#039;&#039;dummy&#039;&#039;, welcher entsprechend abgefragt werden kann:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define NRW_Ferientag dummy&lt;br /&gt;
define NRW_Ferien.notify notify NRW_Ferien { \&lt;br /&gt;
 fhem &amp;amp;quot;set NRW_Ferientag &amp;amp;quot; . (ReadingsVal(&amp;amp;quot;NRW_Ferien&amp;amp;quot;, &amp;amp;quot;modeStart&amp;amp;quot;, &amp;amp;quot;&amp;amp;quot;) =~ &amp;amp;quot;schulferien&amp;amp;quot;&amp;amp;#160;? 1: 0) }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der &#039;&#039;NRW_Ferientag&#039;&#039;ist in diesem Beispiel der angesprochene &#039;&#039;dummy&#039;&#039;und kann mittels &#039;&#039;Value(&amp;quot;NRW_Ferientag&amp;quot;)&#039;&#039;abgefragt werden. Im &#039;&#039;notify&#039;&#039;wird der Wert gesetzt, sobald der Kalender aktualisiert wird: Eine &#039;&#039;1&#039;&#039;für einen Tag, an dem der Text &amp;quot;schulferien&amp;quot; in einem Ereignis vorkommt, welches sich im &#039;&#039;modeStart&#039;&#039;Modus (vgl. [http://www.fhem.de/commandref.html#Calendar CommandRef] - &#039;&#039;The start time has passed but the end time of the calendar event is not yet reached.&#039;&#039;) befindet, ansonsten &#039;&#039;0&#039;&#039;. Das Vorkommen des Textes ist in den Ereignissen der oben genutzten Quelle immer der Fall.&lt;br /&gt;
&lt;br /&gt;
Um ein Rollo nun weder am Wochenende, an Feiertagen, noch zu Schulferien morgens hochfahren zu lassen, lautet das Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define RolloHoch at *07:00 { if (&amp;amp;#160;!($we) &amp;amp;amp;&amp;amp;amp;&amp;amp;#160;!(Value(&amp;amp;quot;NRW_Ferientag&amp;amp;quot;)) ) { fhem(&amp;amp;quot;set Rollo hoch&amp;amp;quot;);; } }&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Windows_-_CPU_Temperatur_und_Co_mit_FHEM&amp;diff=1234</id>
		<title>Windows - CPU Temperatur und Co mit FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Windows_-_CPU_Temperatur_und_Co_mit_FHEM&amp;diff=1234"/>
		<updated>2013-05-10T20:54:44Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „(von kleene 1503)  Hier mal eine Möglichkeit, wie man auf Windows-Systemen die CPU-, HDD-, und andere Temperaturen / Systemdaten in FHEM anzeigen und grafisch…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(von kleene 1503)&lt;br /&gt;
&lt;br /&gt;
Hier mal eine Möglichkeit, wie man auf Windows-Systemen die CPU-,&lt;br /&gt;
HDD-, und andere Temperaturen / Systemdaten in FHEM anzeigen und&lt;br /&gt;
grafisch darstellen kann.&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
- Cygwin installiert&lt;br /&gt;
- SpeedFan installiert&lt;br /&gt;
- Einen WIRKLICH Unix fähigen Editor. Vergesst hierbei Wordpad und&lt;br /&gt;
Notepad!!! Ich nutze Proton (ist kostenlos und frei verfügbar). Bei&lt;br /&gt;
Proton müsst ihr UNBEDINGT darauf achten, dass ihr unter „Datei -&amp;amp;gt;&lt;br /&gt;
Zeilenumbruchformat“ auf Unix umstellt. Sonst sucht ihr wie ich zwei&lt;br /&gt;
Wochen nach einem Fehler wo eigentlich gar keiner ist. Das Umstellen&lt;br /&gt;
unter Syntaxschema auf Unix Shell ist hilfreich aber kein muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf die Installation von Cygwin werde ich hier nicht eingehen. Dazu&lt;br /&gt;
gibt es genug im www.&lt;br /&gt;
&lt;br /&gt;
Laufen tut das ganze bei mir auf Windows 7 Home Premium 64bit.&lt;br /&gt;
== Installiert Cygwin ==&lt;br /&gt;
== Installiert SpeedFan ==&lt;br /&gt;
- Um später Leerzeichen in den Pfadangaben zu vermeiden, habe ich nach&lt;br /&gt;
der Installation von SpeedFan einfach den kompletten&lt;br /&gt;
Installationsordner direkt nach C: kopiert. Im Klartext heißt das, aus&lt;br /&gt;
„C:\Programme (x86)\SpeedFan\“ wurde bei mir „C:\SpeedFan\“.&lt;br /&gt;
&lt;br /&gt;
- SpeedFan selbst habe ich so eingerichtet, dass er mir das Logfile&lt;br /&gt;
MIT Header schreibt. Das Logfile von SpeedFan findet ihr direkt in dem&lt;br /&gt;
Installationsordner von SpeedFan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script zum bearbeiten des SpeedFan Logfiles und speichern eines FHEM tauglichen Logfiles erstellen ==&lt;br /&gt;
- Die Logfiles von SpeedFan sind noch nicht FHEM tauglich. Also müssen&lt;br /&gt;
wir uns die Files mit Hilfe eines kleinen Scriptes in ein FHEM&lt;br /&gt;
taugliches Format umwandeln. Dieses Script sieht bei mir wie folgt&lt;br /&gt;
aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
date=`date +&amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;`&lt;br /&gt;
log=&amp;quot;/cygdrive/c/fhem/tmp/system.log&amp;quot;&lt;br /&gt;
cat /cygdrive/c/SpeedFan/SFLog*.csv \&lt;br /&gt;
    | grep &amp;quot;&amp;quot; \&lt;br /&gt;
    | sed &#039;/Seconds/d&#039; \&lt;br /&gt;
    | sed &#039;s/[\t]/ /g&#039; \&lt;br /&gt;
    | sed &#039;s/ \+/ /g&#039; \&lt;br /&gt;
    | sed &#039;$!d&#039; \&lt;br /&gt;
    | sed &amp;quot;s/^/$date /&amp;quot; &amp;amp;gt;&amp;amp;gt; $log&lt;br /&gt;
#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
!/bin/sh &amp;amp;lt;- sollte klar sein&lt;br /&gt;
&lt;br /&gt;
date=`date +&amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;` &amp;amp;lt;- sollte auch klar sein&lt;br /&gt;
&lt;br /&gt;
log=&amp;quot;/cygdrive/c/fhem/tmp/system.log&amp;quot; &amp;amp;lt;- /cygdrive sagt unserem PC,&lt;br /&gt;
dass wir Cygwin nutzen (um es mal grob auszudrücken); /c/fhem/tmp/&lt;br /&gt;
system.log ist der Pfad wo unser fertiges und FHEM taugliches logfile&lt;br /&gt;
später gespeichert werden soll.&lt;br /&gt;
&lt;br /&gt;
cat /cygdrive/c/SpeedFan/SFLog*.csv \ &amp;amp;lt;- sagt unserem script, wo das&lt;br /&gt;
SpeedFan Logfile liegt welches wir bearbeiten wollen.&lt;br /&gt;
&lt;br /&gt;
| grep &amp;quot;&amp;quot; \ &amp;amp;lt;- liest das komplette SpeddFan Logfile ein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| sed &#039;/Seconds/d&#039; \ &amp;amp;lt;- Entfernt die komplette Zeile in der das Wort&lt;br /&gt;
Seconds vorkommt was in unserem Fall der Header des SpeedFan Logfiles&lt;br /&gt;
ist.&lt;br /&gt;
&lt;br /&gt;
| sed &#039;s/[\t]/ /g&#039; \ &amp;amp;lt;¬- Entfernt alle Tabs aus dem Speedfan Logfile.&lt;br /&gt;
&lt;br /&gt;
| sed &#039;s/ \+/ /g&#039; \ &amp;amp;lt;- Entfernt alle Leerzeichen aus dem SpeedFan&lt;br /&gt;
Logfile.&lt;br /&gt;
&lt;br /&gt;
| sed &#039;$!d&#039; \ &amp;amp;lt;- kopiert immer nur die letzte Zeile des SpeedFan&lt;br /&gt;
Logfiles und kopiert uns diese samt Datum mit&lt;br /&gt;
&lt;br /&gt;
| sed &amp;quot;s/^/$date /&amp;quot; &amp;amp;gt;&amp;amp;gt; $log in unser FHEM taugliches Logfile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieses Script speichert ihr nun als system.sh in eurem Cygwin Home&lt;br /&gt;
Ordner.&lt;br /&gt;
&lt;br /&gt;
Übrigens: Wenn man sich mit dem &amp;quot;sed&amp;quot; Kommando auseinandersetzt, kann man so&lt;br /&gt;
auch Logfiles von anderen Windowsprogrammen zum Temperatur- und&lt;br /&gt;
Systemdaten auslesen wunderbar in ein FHEM taugliches Format bringen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== .bat erstellen zum ausführen der .sh – Datei ==&lt;br /&gt;
- Erstellt euch eine .bat mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;@echo off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;C:&lt;br /&gt;
chdir C:\cygwin\bin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;bash --login -i ./system.sh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und speichert diese als system.bat in eurem fhem Ordner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufrufen der system.bat durch FHEM ==&lt;br /&gt;
- Erstellt in eurer fhem.cfg folgenden Eintrag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SystemDaten at +*00:02:00 { fhem `system`}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieser Eintrag startet alle 2 Minuten die Datei system.bat welche&lt;br /&gt;
wiederum das Script system.sh ausführt.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr es so wie ich gemacht habt, sollte nun innerhalb der nächsten&lt;br /&gt;
2 Minuten) in dem Ordner „C:\fhem\tmp\“ ein Logfile namens system.log&lt;br /&gt;
auftauchen welches alle nötigen Daten enthält und FHEM tauglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plot Datei erstellen ==&lt;br /&gt;
- Als Vorlage habe ich die Datei cpulog.gplot aus dem FHEM Ordner&lt;br /&gt;
genommen. Wichtig ist hier für uns der untere Teil ab set ylabel. Der&lt;br /&gt;
obere Teil kann bleiben wie er ist.&lt;br /&gt;
&lt;br /&gt;
Wir müssen uns nun Überlegen, was wir uns anzeigen lassen wollen. In&lt;br /&gt;
diesem Fall nehmen wir mal die Temperaturen von Core 0 und Core 1.&lt;br /&gt;
&lt;br /&gt;
Als erstes sehen wir uns noch einmal das SpeedFan Logfile an welches&lt;br /&gt;
bei mir folgendermasen aussieht:&lt;br /&gt;
&lt;br /&gt;
Seconds    HD0    Core 0    Core 1&lt;br /&gt;
71180    34.0    36.0    34.0&lt;br /&gt;
&lt;br /&gt;
Core 0 und 1 ist also an 3. und 4. Stelle nach Seconds.&lt;br /&gt;
&lt;br /&gt;
Nun sehe ich mir unser erstelltes system.log Logfile an:&lt;br /&gt;
&lt;br /&gt;
2012-03-19_22:33:15 71180 34.0 36.0 34.0&lt;br /&gt;
&lt;br /&gt;
Wir haben also vor dem Wert für Seconds noch das Datum und die Uhrzeit&lt;br /&gt;
und den Temperaturwert für Core 0 und 1 finden wir nun an der 4. und&lt;br /&gt;
5. Stelle. Wichtig ist, dass ihr Leerzeichen nicht mit zählt.&lt;br /&gt;
&lt;br /&gt;
Gehen wir nun zurück zur Datei cpulog.gplot und Tragen folgendes ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set ylabel &amp;quot;Temperatur in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#FileLog 4::0:&lt;br /&gt;
#FileLog 5::0:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;plot &amp;quot;&amp;amp;lt;IN&amp;amp;gt;&amp;quot; using 1:4 title &#039;Temperatur Core 0&#039; with lines,\&lt;br /&gt;
 &amp;quot;&amp;amp;lt;IN&amp;amp;gt;&amp;quot; using 1:5 title &#039;Temperatur Core 1&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Temperatur in C&amp;quot; &amp;amp;lt;- Ist die linke, senkrechte Bezeichnung&lt;br /&gt;
des Plot-Fensters.&lt;br /&gt;
&lt;br /&gt;
set y2label &amp;quot;Temperatur in C&amp;quot; &amp;amp;lt;- Ist die rechte, senkrechte&lt;br /&gt;
Bezeichnung des Plot-Fensters.&lt;br /&gt;
&lt;br /&gt;
FileLog 4::0: &amp;amp;lt;- liest die 4 Stelle unseres Logfiles aus.&lt;br /&gt;
&lt;br /&gt;
FileLog 5::0: &amp;amp;lt;- liest die 5. Stelle unseres Logfiles aus.&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;amp;lt;IN&amp;amp;gt;&amp;quot; using 1:4 &amp;amp;lt;- zeigt die 4. Stelle unseres Logfiles im Plot-&lt;br /&gt;
Fenster.&lt;br /&gt;
title &#039;Temperatur Core 0&#039; with lines &amp;amp;lt;- Zeigt im Plot-Fenster den&lt;br /&gt;
Titel unserer Linie.&lt;br /&gt;
&lt;br /&gt;
,\ &amp;amp;lt;- Sagt FHEM das noch eine weitere Linie kommt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Speichert dies nun Beispielsweise als core01.gplot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plot in FHEM anzeigen lassen ==&lt;br /&gt;
- Nun Tragen wir in unserer fhem.cfg folgendes ein:&lt;br /&gt;
&lt;br /&gt;
define SystemLog FileLog C:/fhem/tmp/system.log SystemDaten&lt;br /&gt;
attr SystemLog logtype core01&lt;br /&gt;
&lt;br /&gt;
define Sys weblink fileplot SystemLog:core01:CURRENT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat, solltet ihr nun die Temperaturen grafisch in&lt;br /&gt;
FHEM dargestellt bekommen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich übernehme keine Garantie. Kann nur sagen, dass es bei mir so&lt;br /&gt;
geklappt hat. Ich hoffe ich kann dem einen oder anderen damit helfen&lt;br /&gt;
oder wenigstens einen Denkanstoß geben.&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmt noch elegantere Lösung allerdings habe ich für&lt;br /&gt;
Windows bis jetzt noch nichts gefunden.&lt;br /&gt;
&lt;br /&gt;
(von kleene 1503)&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Was_ist_der_Hauscode%3F&amp;diff=1233</id>
		<title>Was ist der Hauscode?</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Was_ist_der_Hauscode%3F&amp;diff=1233"/>
		<updated>2013-05-10T20:54:44Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Frage: == Verschiedentlich ist vom Hauscode die Rede, mal im Kontext FS20 und mal im Zusammenhang mit FHT. Ist das der selbe Hauscode? Wozu dient der Hausco…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Frage: ==&lt;br /&gt;
Verschiedentlich ist vom Hauscode die Rede, mal im Kontext FS20 und mal im Zusammenhang mit FHT.&lt;br /&gt;
Ist das der selbe Hauscode? Wozu dient der Hauscode?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antwort: ==&lt;br /&gt;
FS20-Hauscode und FHT-Hauscode aka &amp;quot;FHT-ID&amp;quot; ist *nicht* das Selbe.&lt;br /&gt;
&lt;br /&gt;
Leider wurde und wird in FHEM Diskussionsgruppen, im Wiki und auch in der [[Commandref&amp;quot; class=&amp;quot;mw-redirect]] einheitlich von FHTID gesprochen)&lt;br /&gt;
&lt;br /&gt;
Wenn man also irgendwo im Zusammenhang mit FHEM &amp;quot;Hauscode&amp;quot; liest... erstmal innehalten und versuchen rauszubekommen, was in dem Moment gemeint ist: Hauscode des FS20 Adresssystems oder FHT-ID? &lt;br /&gt;
&lt;br /&gt;
Bei ELV und Conrad ist mit &amp;quot;Hauscode&amp;quot; immer der FS20 Hauscode gemeint, da der normale ELV/Conrad Nutzer die FHT-ID nie zu Gesicht bekommt. Die FHT-ID ist in der Standalone Zentrale FHZ1000 fest einprogrammiert und muss nicht gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Dem CUL/CUN (und ebenso den Zentralen FHZ1X00PC) aber muss man einen FHT-Hauscode (FHT-ID) zuweisen, sonst kann er sich nicht mit FHTs pairen, denn die default FHT-ID des CUL/CUN ist 0000 und das bedeutet soviel wie: &amp;quot;an FHT Kommunikation nicht teilnehmen&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Daher ist im Zusammenhang mit FHEM mit &amp;quot;Hauscode&amp;quot; oft die FHT-ID gemeint, wärend der FS20 Hauscode nur als Adressbestandteil der FS20 Geräte aufgefasst wird. &lt;br /&gt;
&lt;br /&gt;
In CUL oder CUN muss man den Hauscode 1x einkonfigurieren (wird ins EPROM geschrieben), das macht man z.b. mit &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set CUL raw T01abcd&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wobei abcd die FHT-ID (hex) ist und für CUL der Name des Remoten CUL/ CUNs eingesetzt werden muss. &lt;br /&gt;
&lt;br /&gt;
Die FHT-ID kann frei gewählt werden. (Wertepaare von hex00-62, entsprechend dezimal 0-99) Hat man mehrere &lt;br /&gt;
CUN/CULs (oder RFR-CULs) müssen die FHT-ID unterscheidlich sein, um &amp;quot;Zuständigkeitskonflike&amp;quot; zu vermeiden. &lt;br /&gt;
Siehe auch [[FHT mit RFR CUL pairen]] &lt;br /&gt;
&lt;br /&gt;
Eine FHT-ID muss man dem CUL/CUN also nur zuweisen, wenn man FHTs pairen will. &lt;br /&gt;
&lt;br /&gt;
Der tatsächliche FS20 Hauscode hingegen sieht anders aus und wird auch nur bei der Definition der Devices angegeben. &lt;br /&gt;
Das sieht dann z.B. so aus: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht1_Bad FS20 11112244 34&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wobei hier &amp;quot;11112244&amp;quot; der FS20 Hauscode in ELV Notation ist. &lt;br /&gt;
(FHEM beherrscht die Angabe des Hauscodes in ELV Notation und Hexadezimal. Die Verwendung der ELV Notation auch in FHEM hat den Vorteil, dass die erforderlichen Tastendrücke sofort ablesbar sind und sich so bei der Nachprogrammierung von Geräten weniger leicht Fehler einschleichen.)&lt;br /&gt;
&lt;br /&gt;
Tatsächlich wird NUR dieser Teil in den ELV und Conrad (etc.) Handbüchern je &amp;quot;Hauscode&amp;quot; genannt. &lt;br /&gt;
Faktisch ist das aber nur ein Bestandteil des Adressraumes der FS20 Geräte. &lt;br /&gt;
Im Gegensatz zu z.b. einer [[FHZ1000&amp;quot; class=&amp;quot;mw-redirect]], wo der FS20 Hauscode eingegeben &lt;br /&gt;
werden muss und dann für alle gesteuerten Geräte gleich sein muss, ist es im Umfeld FHEM mit CUL/CUN egal, welche Hauscodes verwendet werden. &lt;br /&gt;
Man kann also z.b. sowas machen: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht1_Bad FS20 11112244 34 &lt;br /&gt;
define Licht2_Bad FS20 11112242 34&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
also Schalter im selben Raum nicht durch eine andere Adresse, sondern durch einen anderen Hauscode unterscheiden.&lt;br /&gt;
In der Ideenwelt von ELV ist es vorgesehen, dass Aktoren andere Adressen, aber innerhalb einer Zentrale einen Hauscode haben. Zwingend ist das aber nicht. Vielmehr ist der Hauscode eigentlich einfach nur eine Bestandteil des Adressraumes, den man frei verwenden kann um Devices zu adressieren. &lt;br /&gt;
&lt;br /&gt;
Dabei geht allerdings die Funktionalität der Masteradresse verloren, die nur innerhalb eines Hauscodes wirkt.&lt;br /&gt;
Im Zusammenhang mit FHEM ist eine &amp;quot;Masterschalter&amp;quot; (ALLE Lichter mit einem Befehl aus) aber leicht zu realisieren, sodass dieser Nachteil weniger bedeutend ist.&lt;br /&gt;
&lt;br /&gt;
Vielfach wird der Hauscode aber dennoch als ordnendes Element verwendet, als z.b. alle Lichtschalter und Aktoren mit einem Hauscode, alle Beweggungsmelder mit einem anderen Hauscode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== siehe auch ====&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[[FHT-ID der FHZ1300 herausfinden]] &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[[FS20 Allgemein]] &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wakeuplight&amp;diff=1232</id>
		<title>Wakeuplight</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wakeuplight&amp;diff=1232"/>
		<updated>2013-05-10T20:54:41Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Set up a wakeup light which will slowly dim-up a lamp, e.g. at your bedside, and will switch it off again after a certain time. The solution requires a dimmer …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Set up a wakeup light which will slowly dim-up a lamp, e.g. at your bedside, and will switch it off again after a certain time.&lt;br /&gt;
The solution requires a dimmer hardware device, e.g. FS20-di. In the example below the dimmer is named Lamp1.&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define wakeup at *07:00:00 {\&lt;br /&gt;
  if (!$we) {\&lt;br /&gt;
   {fhem(&amp;quot;set Lamp1 dim100% 1280&amp;quot;) }\&lt;br /&gt;
   {fhem(&amp;quot;define wakeupOff at +00:40:00 set Lamp1 off&amp;quot;) }\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
The time indicated for wakeup (here: 7am) is the starting-time of the dim-procedure. The asterisk indicates this procedure shall be executed every day.&lt;br /&gt;
&lt;br /&gt;
The program uses the variable $we (weekend), so your wakeuplight will only turn on on weekdays. If you implement holiday2we, the wakeuplight will also remain off on holidays.&lt;br /&gt;
&lt;br /&gt;
The set-command &#039;dim100% 1280&#039; will dim the lamp to 100% over a timespan of 1280 seconds, i.e. 21 minutes.&lt;br /&gt;
&lt;br /&gt;
Finally, the off-command is scheduled for 40 minutes from wakeuptime.&lt;br /&gt;
&lt;br /&gt;
== Change of wakeuptime ==&lt;br /&gt;
To change the wakeuptime to e.g. 8am, type the following into the input-field on the fhem-frontend:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;modify wakeup *08:00:00&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change of wakeuptime using sliders ==&lt;br /&gt;
Setting the wakeuptime using the &amp;quot;modify wakeup&amp;quot; command is inconvenient. Especially forgetting to set the asterisk (*) is a pain, as the wakeup-definition will disappear after next execution.&lt;br /&gt;
To avoid this pitfall, there is an option to add an additional pseudo-device which offers sliders to set the wakeup time:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define wakeupChange dummy&lt;br /&gt;
attr wakeupChange setList state:time&lt;br /&gt;
attr wakeupChange webCmd state&lt;br /&gt;
define n_wakeupChange notify wakeupChange {fhem(&amp;amp;quot;modify wakeup *%&amp;amp;quot;);;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation: A dummy device wakeupChange is defined. It carries sliders to select the wakeuptime. Subsequently, a notify is defined, which gets triggered whenever a time is selected using the sliders. This chosen time is then used to execute the &#039;modify wakeup&#039;-command for the actual wakeup-device.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=VoIP_to_FHEM&amp;diff=1230</id>
		<title>VoIP to FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=VoIP_to_FHEM&amp;diff=1230"/>
		<updated>2013-05-10T20:54:41Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= VoIP2FHEM or HOWTO control the FHEM with Asterisk = == Description == This is a HOWTO about the use of a VoIP-DECT-Telephone (or every phone of a fritzbox) a…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= VoIP2FHEM or HOWTO control the FHEM with Asterisk =&lt;br /&gt;
== Description ==&lt;br /&gt;
This is a HOWTO about the use of a VoIP-DECT-Telephone (or every phone of a fritzbox) as a remote controller for the FHEM-Devices.&lt;br /&gt;
The provided scripts are under the GPL.&lt;br /&gt;
&lt;br /&gt;
The Goal is&lt;br /&gt;
&lt;br /&gt;
* Switching the FS20-Devices&lt;br /&gt;
* text2speach, the Telephone reads e.g. the measured-temp&lt;br /&gt;
* Possibility to start scripts with the Remote Telephone&lt;br /&gt;
* AND EVERYTHING SHOULD RUN ON THE NSLU2 (or other small machines):-)&lt;br /&gt;
== Technical Overview ==&lt;br /&gt;
On the NLSU2 (or every other Linux Box) runs an Asterisk. This machine needs not to be the machine with the FHEM. I bought the Voip-DECT-Telephone Siemens Gigaset C470 IP (80.-EUR). It has a nice Webinterface and it is possible to read in a self made telephone book. If you have a Fritzbox you do not need such special devices (see below).&lt;br /&gt;
&lt;br /&gt;
The Asterisk calls depending on the dialed number a bash skript. After that Asterisk plays two soundfiles &amp;amp;lt; text &amp;amp;gt;&amp;amp;lt; value &amp;amp;gt; in a loop.&lt;br /&gt;
&lt;br /&gt;
The NSLU2 is a weak machine. It always only creates a soundfile 1x and then stores it on the harddisk. A set of prebuild voices (e.g. digits from -20 to 90) are included. Some scripts for creating soundfiles and automatically the telephone book are provided too.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to [http://fhem.dnsalias.net/voip2fhem [1]] and download the files.&lt;br /&gt;
&lt;br /&gt;
* Install with your package manager asterisk, sox, espeak, libsox-fmt-gsm. On Debian based Machines: &amp;quot;apt-get install asterisk sox espeak libsox-fmt-gsm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Debian: activate asterisk in the /etc/default/asterisk&lt;br /&gt;
&lt;br /&gt;
* copy the scripts voip2fhem voip2fhem_create_telefonlist voip2fhem_create_txt2gsm to /usr/local/bin/ and be shure that they are executable (chmod +x /usr/local/bin/voip2fhem*)&lt;br /&gt;
* extract the prepared voices &amp;quot;tar -xvzf voip2fhem_voices.tar.gz -C /&amp;quot; and give the correct rights &amp;quot;chown -R asterisk.asterisk /var/tmp/voip2fhem&amp;quot;&lt;br /&gt;
* cp extensions.conf and sip.conf to /etc/asterisk/ and edit these files and the bash script /usr/local/bin/voip2fhem&lt;br /&gt;
* restart/reload asterisk (/etc/init.d/asterisk restart or asterisk -r and then &amp;quot;extensions reload&amp;quot; and &amp;quot;sip reload&amp;quot;)&lt;br /&gt;
== Example extensions.conf ==&lt;br /&gt;
this is an example of an extensions.conf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[FHEM]&lt;br /&gt;
; after every change of this file make &amp;quot;asterisk -r&amp;quot; and then &amp;quot;extensions reload&amp;quot;&lt;br /&gt;
exten =&amp;amp;gt; 3001,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3001,2,System(/usr/local/bin/voip2fhem ks300 &amp;quot;Aussentemperatur .&amp;quot; KS300) &lt;br /&gt;
exten =&amp;amp;gt; 3001,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3001,n,Playback(/tmp/asterisk2)&lt;br /&gt;
exten =&amp;amp;gt; 3001,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3001,n,Goto(3)&lt;br /&gt;
exten =&amp;amp;gt; 3002,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3002,2,System(/usr/local/bin/voip2fhem kesselu &amp;quot;Kesseltemperatur kesselu .&amp;quot; HMS100) &lt;br /&gt;
exten =&amp;amp;gt; 3002,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3002,4,Playback(/tmp/asterisk2)&lt;br /&gt;
exten =&amp;amp;gt; 3002,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3002,n,Goto(3) &lt;br /&gt;
exten =&amp;amp;gt; 3003,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3003,2,System(/usr/local/bin/voip2fhem wz &amp;quot;Wohnzimmertemperatur .&amp;quot; FHT) &lt;br /&gt;
exten =&amp;amp;gt; 3003,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3003,4,Playback(/tmp/asterisk2)&lt;br /&gt;
exten =&amp;amp;gt; 3003,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3003,n,Goto(3) &lt;br /&gt;
exten =&amp;amp;gt; 3004,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3004,2,System(/usr/local/bin/voip2fhem nachto &amp;quot;Nachtlicht oben&amp;quot; FS20) &lt;br /&gt;
exten =&amp;amp;gt; 3004,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3004,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3004,n,Goto(3)&lt;br /&gt;
exten =&amp;amp;gt; 3005,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3005,2,System(/usr/local/bin/voip2fhem stuwz1 &amp;quot;Fernsehlicht&amp;quot; FS20) &lt;br /&gt;
exten =&amp;amp;gt; 3005,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3005,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3005,n,Goto(3)&lt;br /&gt;
exten =&amp;amp;gt; 3006,1,Answer()&lt;br /&gt;
exten =&amp;amp;gt; 3006,2,System(/usr/local/bin/voip2fhem ofen &amp;quot;Status Ofen .&amp;quot; FS20STATE) &lt;br /&gt;
exten =&amp;amp;gt; 3006,3,Playback(/tmp/asterisk1)&lt;br /&gt;
exten =&amp;amp;gt; 3006,n,Playback(/tmp/asterisk2)&lt;br /&gt;
exten =&amp;amp;gt; 3006,n,Wait(3)&lt;br /&gt;
exten =&amp;amp;gt; 3006,n,Goto(3)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Example sip.conf ==&lt;br /&gt;
this is an example of a sip.conf &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[general]&lt;br /&gt;
context=FHEM&lt;br /&gt;
port=5060&lt;br /&gt;
bindaddr=0.0.0.0&lt;br /&gt;
&lt;br /&gt;
; FHEM: VoIP-Telephone with the Name/Number 2000 and the password 1234&lt;br /&gt;
[2000]&lt;br /&gt;
type=friend&lt;br /&gt;
context=FHEM&lt;br /&gt;
secret=1234&lt;br /&gt;
host=dynamic&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative use of the Fritzbox ==&lt;br /&gt;
If you have a Fritzbox you can register your Asterisk there. After that you can use every telephone, which is registered on the Fritzbox. In this case you do not need further devices like a special VOIP-Device.&lt;br /&gt;
&lt;br /&gt;
Go to something like &amp;quot;Internettelefonie&amp;quot; and register Asterisk. The Registrar is the IP-Address of the Asterisk-Box. The Calling-Number is the internal number like 2000 in this example. User name (2000) and password (1234) are from the sip.conf:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;##############&lt;br /&gt;
; Example:&lt;br /&gt;
; FHEM: VoIP-Telephone with the Name/Number 2000 and the password 1234&lt;br /&gt;
[2000]&lt;br /&gt;
type=friend&lt;br /&gt;
context=FHEM&lt;br /&gt;
secret=1234&lt;br /&gt;
host=dynamic&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Fritzbox will give you a short number (e.g. *123#) -- after that you can call your skripts with &#039;&#039;&#039;*123#3001#&#039;&#039;&#039;with every telephone of your Fritzbox.&lt;br /&gt;
&lt;br /&gt;
== Hints ==&lt;br /&gt;
* if there isn&#039;t the required soundfile then the NSLU2 creates it. This needs on this weak machine minutes (example: the word &amp;quot;asterisk&amp;quot; needs 3 min). voip2fhem stores this file and the next time it will be used.&lt;br /&gt;
* Use the script voip2fhem_create_txt2gsm on a faster machine to create the sounds. Usage: voip2fhem_create_txt2gsm &amp;quot;I love FHEM&amp;quot;. The soundfile is then automatically copied to /var/tmp/voip2fhem/&lt;br /&gt;
* it is also possible to connect the ASTERISK with the rest of the world (e.g. Sipgate, 1und1) :-)&lt;br /&gt;
* for debug asterisk: &amp;quot;asterisk -r&amp;quot;, &amp;quot;sip debug&amp;quot;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Velux_KUX_100&amp;diff=1229</id>
		<title>Velux KUX 100</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Velux_KUX_100&amp;diff=1229"/>
		<updated>2013-05-10T20:54:33Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Einbindung von Velux io-homecontrol Rollos (Velux KUX 100) lässt sich ohne Weiteres nicht mit FHEM erreichen.  Bei mir habe ich folgende Lösung in der Umsetz…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Einbindung von Velux io-homecontrol Rollos (Velux KUX 100) lässt sich ohne Weiteres nicht mit FHEM erreichen.&lt;br /&gt;
&lt;br /&gt;
Bei mir habe ich folgende Lösung in der Umsetzung:&lt;br /&gt;
Die originalen Handsender der KUX100 werden zerlegt. Die 3 Kontakte für Auf - Stop - Ab werden mit 3 Relais verbunden.&lt;br /&gt;
Die Relais wiederum werden von einem FS20 SM8 Modul geschaltet.&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Auslöseschritte für das Auf - Ab Schalten der Relais werden dann in einem neuen FS20 Dummy Device zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Anbei der Code aus meiner Fhem.cfg für 1 Rollo.&lt;br /&gt;
&lt;br /&gt;
Update 04-Mai-2012:&lt;br /&gt;
Die 50% Auf und Ab Lösung mit Verwendung der Sleep Funktion bereitete einige Probleme, daher hier eine angepasste Version mit &amp;quot;Notify at&amp;quot; anstatt Sleep, um die Rollo Auf/Ab Bewegung nach einer definierten Zeit zu stoppen.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf mehrerer Verketter Rollo Auf Aufrufe funktioniert dann auch wieder (war mit Sleep schwierig).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# ---------- START Definition Schlafzimmer_Oben_Nord ROLLLADEN -------------&lt;br /&gt;
# Definition Schalter AUF Adresse vom FS20 SM8 - Kanal1 / Über Relais den &amp;amp;quot;Auf&amp;amp;quot; Schalter der OriginalFernbedienung schalten&lt;br /&gt;
define RS_SZO_N_Auf FS20 ab01 00&lt;br /&gt;
attr RS_SZO_N_Auf IODev CUNO_O&lt;br /&gt;
attr RS_SZO_N_Auf model fs20&lt;br /&gt;
attr RS_SZO_N_Auf room 5_SYSTEM&lt;br /&gt;
# Definition Schalter AB Adresse vom FS20 SM8 - Kanal2 / Über Relais den &amp;amp;quot;Ab&amp;amp;quot; Schalter der OriginalFernbedienung schalten&lt;br /&gt;
define RS_SZO_N_Ab FS20 ab02 00&lt;br /&gt;
attr RS_SZO_N_Ab IODev CUNO_O&lt;br /&gt;
attr RS_SZO_N_Ab model fs20&lt;br /&gt;
attr RS_SZO_N_Ab room 5_SYSTEM&lt;br /&gt;
# Definition Schalter STOP Adresse vom FS20 SM8 - Kanal3 / Über Relais den &amp;amp;quot;Stop&amp;amp;quot; Schalter der OriginalFernbedienung schalten&lt;br /&gt;
define RS_SZO_N_Stop FS20 ab03 00&lt;br /&gt;
attr RS_SZO_N_Stop IODev CUNO_O&lt;br /&gt;
attr RS_SZO_N_Stop model fs20&lt;br /&gt;
attr RS_SZO_N_Stop room 5_SYSTEM&lt;br /&gt;
# Definition eines Dummy FS20 der im entsprechenden Raum (OG) angezeigt wird, und die Schaltvorgänge triggert&lt;br /&gt;
#define Rollo_SchlafZ_O_N FS20 f1f1 00&lt;br /&gt;
define Rollo_SchlafZ_O_N dummy&lt;br /&gt;
attr Rollo_SchlafZ_O_N eventMap /on:Ab/off:Auf/dim06%:Ab50/dim93%:Auf50/&lt;br /&gt;
attr Rollo_SchlafZ_O_N room 2_ROLLLADEN&lt;br /&gt;
attr Rollo_SchlafZ_O_N webCmd Ab:Auf:Ab50:Auf50&lt;br /&gt;
#Rollo AB 100% - AB Taste 1 Sekunde auslösen&lt;br /&gt;
define RSZO_N_Ab notify Rollo_SchlafZ_O_N.Ab set RS_SZO_N_Ab on-for-timer 1&lt;br /&gt;
attr RSZO_N_Ab room 5_SYSTEM&lt;br /&gt;
#Rollo AUF 100% - AUF Taste 1 Sekunde auslösen&lt;br /&gt;
define RSZO_N_Auf notify Rollo_SchlafZ_O_N.Auf set RS_SZO_N_Auf on-for-timer 1&lt;br /&gt;
attr RSZO_N_Auf room 5_SYSTEM&lt;br /&gt;
#Rollo AB50% - 15 Sekunden Rolladen Abwärts - ggf. die Sleep Zeit anpassen&lt;br /&gt;
define RSZO_N_Ab50 notify Rollo_SchlafZ_O_N.Ab50 {\&lt;br /&gt;
 fhem &amp;amp;quot;set RS_SZO_N_Ab on-for-timer 1&amp;amp;quot;;;\  &lt;br /&gt;
 fhem &amp;amp;quot;define Rollo_SZO_N_Stop at +*{1}00:00:41 set RS_SZO_N_Stop on-for-timer 1&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollo_SZO_N_Stop room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr RSZO_N_Ab50 room 5_SYSTEM&lt;br /&gt;
#Rollo AUF50% - 15 Sekunden Rolladen Aufwärts - ggf. die Sleep Zeit anpassen&lt;br /&gt;
define RSZO_N_Auf50 notify Rollo_SchlafZ_O_N.Auf50 {\&lt;br /&gt;
 fhem &amp;amp;quot;set RS_SZO_N_Auf on-for-timer 1&amp;amp;quot;;;\  &lt;br /&gt;
 fhem &amp;amp;quot;define Rollo_SZO_N_Stop at +*{1}00:00:30 set RS_SZO_N_Stop on-for-timer 1&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollo_SZO_N_Stop room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr RSZO_N_Auf50 room 5_SYSTEM&lt;br /&gt;
# ---------- ENDE Definition Schlafzimmer_Oben_Nord ROLLLADEN -------------&lt;br /&gt;
# ---------- Routine um mehrere Rollos zeitversetzt nach Sunrise / Sunset Notify zu steuern (um SM8 Befehle zeitlich zu entspannen).&lt;br /&gt;
define Rollladen_OG_Morgens_Auf at *{sunrise(-210,&#039;05:30&#039;,&#039;08:00&#039;)} {\&lt;br /&gt;
 fhem &amp;amp;quot;set Rollo_ArbeitsZ Auf50%&amp;amp;quot;;;\  &lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_N at +*{1}00:00:30 set Rollo_SchlafZ_O_N Auf50&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_Timer_N room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_SL at +*{1}00:01:00 set Rollo_SchlafZ_O_SL Auf50&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_Timer_SL room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_SR at +*{1}00:01:30 set Rollo_SchlafZ_O_SR Auf50&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_Timer_SR room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Rollladen_OG_Morgens_Auf room 2_ROLLLADEN&lt;br /&gt;
define Rollladen_OG_Abends_Ab at *{sunset(330,&#039;19:00&#039;,&#039;22:00&#039;)} {\&lt;br /&gt;
 fhem &amp;amp;quot;set Rollo_ArbeitsZ Ab&amp;amp;quot;;;\  &lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_N at +*{1}00:00:30 set Rollo_SchlafZ_O_N Ab&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_Timer_N room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_SL at +*{1}00:01:00 set Rollo_SchlafZ_O_SL Ab&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_TimerSL room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;define Rollladen_OG_Morgens_Timer_SR at +*{1}00:01:30 set Rollo_SchlafZ_O_SR Ab&amp;amp;quot;;;\&lt;br /&gt;
 fhem &amp;amp;quot;attr Rollladen_OG_Morgens_Timer_SR room 5_SYSTEM&amp;amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Rollladen_OG_Abends_Ab room 2_ROLLLADEN&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Ultraschallsensor_f%C3%BCr_Heiz%C3%B6ltank_mit_USF1000_Emulation&amp;diff=1228</id>
		<title>Ultraschallsensor für Heizöltank mit USF1000 Emulation</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Ultraschallsensor_f%C3%BCr_Heiz%C3%B6ltank_mit_USF1000_Emulation&amp;diff=1228"/>
		<updated>2013-05-10T20:54:32Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „alt=Heizölmessung 1.JPG &amp;#039;&amp;#039;&amp;#039;Als Sensor wollte ich ursprünglic…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:/w/images/4/4d/Heiz%C3%B6lmessung_1.JPG|960px|link=/wiki/Datei:Heiz%C3%B6lmessung_1.JPG|alt=Heizölmessung 1.JPG]]&lt;br /&gt;
&#039;&#039;&#039;Als Sensor wollte ich ursprünglich den Ultraschallsensor SRF01 verwenden.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Dazu hatte mir Maz Rashid seinen Sourcecode für den SRF02 mit CC1101-Processor-Module (CPM) bereitgestellt.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Nachdem ich aber den Heizölstand messen wollte, habe ich dann doch lieber einen wasserresistenten Sensor der Schutzart IP-67 ausgewählt. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zudem habe ich anstatt des abgekündigten CPM Modules, das neue CSM Modul von Busware verwendet.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Dazu gibt es eine Superinfo. Einfach bei der Bestellung des CSM Moduls die Verwendung als Heizölstandmesser angeben. &#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Dann wird das CSM schon richtig programmiert geliefert und keiner muss sich um einen Programmieradapter sorgen.&#039;&#039;&#039;&lt;br /&gt;
[[File:/w/images/d/d4/Heiz%C3%B6lmessung_2.JPG|960px|link=/wiki/Datei:Heiz%C3%B6lmessung_2.JPG|alt=Heizölmessung 2.JPG]]&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Caesar_2&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Caesar 2 (Seite nicht vorhanden)&amp;quot;&amp;gt;Caesar 2&amp;lt;/a&amp;gt; (&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer_Diskussion:Caesar_2&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer Diskussion:Caesar 2 (Seite nicht vorhanden)&amp;quot;&amp;gt;Diskussion&amp;lt;/a&amp;gt;) 23:17, 5. Sep. 2012 (CEST)&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Ultraschallsensor&amp;diff=1227</id>
		<title>Ultraschallsensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Ultraschallsensor&amp;diff=1227"/>
		<updated>2013-05-10T20:54:31Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „alt=SRF06 Ansicht fertig bestückte Platine (Bild robot-electronics.co.uk)  = Analog = Bei […“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:/w/images/d/db/Srf06.jpg|300px|link=/wiki/Datei:Srf06.jpg|alt=]]SRF06 Ansicht fertig bestückte Platine (Bild robot-electronics.co.uk)&lt;br /&gt;
&lt;br /&gt;
= Analog =&lt;br /&gt;
Bei [http://www.robot-electronics.co.uk/acatalog/Ultrasonic_Rangers.html SRF06 - 4-20mA Current Loop Ultrasonic Range Finder]&lt;br /&gt;
Dieser stellt je nach Messweite einen Ausgangsstrom von 4-20mA bereit. Mittels A/D Wandler (1wire, zb. DS2438) kann das Signal bequem eingelesen werden.&lt;br /&gt;
Deutsche Distributoren sind zb:&lt;br /&gt;
&lt;br /&gt;
[http://www.exp-tech.de/Sensoren/SRF06-4-20mA-Current-Loop-Ultrasonic-Ranger-Finder.html http://www.exp-tech.de/Sensoren/SRF06-4-20mA-Current-Loop-Ultrasonic-Ranger-Finder.html]&lt;br /&gt;
&lt;br /&gt;
[http://de.manu-systems.com/SRF06.shtml http://de.manu-systems.com/SRF06.shtml]&lt;br /&gt;
&lt;br /&gt;
[http://www.lipoly.de/index.php?main_page=product_info&amp;amp;amp;cPath=880_2631_2632&amp;amp;amp;products_id=161191 http://www.lipoly.de/index.php?main_page=product_info&amp;amp;amp;cPath=880_2631_2632&amp;amp;amp;products_id=161191]&lt;br /&gt;
&lt;br /&gt;
[http://nodna.de/Devantech-SRF06-Current-Loop-Ultraschall-Sensor http://nodna.de/Devantech-SRF06-Current-Loop-Ultraschall-Sensor]&lt;br /&gt;
&lt;br /&gt;
nach folgendem Plan wird der Sensor an einen A/D Wandler angeschlossen, das originale Manual ist [http://www.robot-electronics.co.uk/htm/srf06tech.htm hier] nachzulesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/e/e7/Srf06_connect.gif|460px|link=/wiki/Datei:Srf06_connect.gif|alt=SRF06 Beschaltungsplan (Bild robot-electronics.co.uk)]]&lt;br /&gt;
&lt;br /&gt;
= Digital =&lt;br /&gt;
Bei [http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html&amp;quot;&amp;gt;[4]&amp;lt;/a&amp;gt;) über Ethersex/&amp;lt;a href=&amp;quot;/wiki/ECMD&amp;quot; title=&amp;quot;ECMD ECMD] zur Ansteuerung eines Magnetventils der Nachspeisung schalten. Damit soll ein Trockenlaufen der Pumpe vermieden werden und auch in Trockenzeiten Wasser über die Brauchwasserleitung zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist ziemlich einfach (5 Ziffern im Abstand von ca. 100 ms senden und die Ausgabe des Sensors seriell einlesen), sodass eine Verarbeitung mit Fhem, Nagios/Icinga oder Cacti jederzeit möglich ist.&lt;br /&gt;
&lt;br /&gt;
Durch den (Mindest-)Abstand von 100 ms zwischen den Zeichen verbietet sich der Einsatz von ECMD, da dieses Modul die Zeichen immer mit der vollen Baudrate sendet und bisher kein &amp;quot;Pausenzeichen&amp;quot; (delay) dort möglich ist.&lt;br /&gt;
&lt;br /&gt;
Deshalb habe ich ein kleines (aber nicht sehr elegantes) Pearl-Skript für die serielle Schnittstelle geschrieben, welches momentan zwar im Verzeichnis /usr/share/fhem/FHEM/ liegt, aber noch nicht in FHEM eingebunden ist. Ich verwende dieses aber bereits für das [[Statusdisplay&amp;quot; class=&amp;quot;mw-redirect]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/usr/bin/perl&lt;br /&gt;
#&lt;br /&gt;
#  Ultrasonic sensor value retrieval using Mini3-Sensor from icplan.de &lt;br /&gt;
#  Copyright (C) 2011 Jens Wagner&lt;br /&gt;
#  &lt;br /&gt;
#  This program is free software: you can redistribute it and/or modify&lt;br /&gt;
#  it under the terms of the GNU General Public License as published by&lt;br /&gt;
#  the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
#  (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
#  This program is distributed in the hope that it will be useful,&lt;br /&gt;
#  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br /&gt;
#  GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
#  You should have received a copy of the GNU General Public License&lt;br /&gt;
#  along with this program. If not, see &amp;amp;lt;[http://www.gnu.org/licenses/ http://www.gnu.org/licenses/]&amp;amp;gt;.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
use strict;&lt;br /&gt;
use Device::SerialPort; &lt;br /&gt;
#&lt;br /&gt;
my $seriel = Device::SerialPort-&amp;amp;gt;new(&#039;/dev/ttyS1&#039;) || die &amp;quot;Kann /dev/ttyS1 nicht öffnen! ($!)\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
$seriel-&amp;amp;gt;baudrate(9600);&lt;br /&gt;
$seriel-&amp;amp;gt;parity(&amp;quot;none&amp;quot;);&lt;br /&gt;
$seriel-&amp;amp;gt;databits(8);&lt;br /&gt;
$seriel-&amp;amp;gt;stopbits(1);&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Entfernung Sensor 1: &amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
$seriel-&amp;amp;gt;write(&#039;1&#039;);&lt;br /&gt;
select(undef, undef, undef, 0.2);&lt;br /&gt;
$seriel-&amp;amp;gt;write(&#039;2&#039;);&lt;br /&gt;
select(undef, undef, undef, 0.2);&lt;br /&gt;
$seriel-&amp;amp;gt;write(&#039;0&#039;);&lt;br /&gt;
select(undef, undef, undef, 0.2);&lt;br /&gt;
$seriel-&amp;amp;gt;write(&#039;0&#039;);&lt;br /&gt;
select(undef, undef, undef, 0.2);&lt;br /&gt;
$seriel-&amp;amp;gt;write(&#039;0&#039;);&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
$|=1;&lt;br /&gt;
my $exit=0;&lt;br /&gt;
while($exit &amp;amp;lt; 2000)&lt;br /&gt;
{&lt;br /&gt;
my ($cin, $sin) = $seriel-&amp;amp;gt;read(1);&lt;br /&gt;
if($cin)&lt;br /&gt;
{&lt;br /&gt;
 print $sin;&lt;br /&gt;
 $exit=0;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{$exit++}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
exit(0);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Verwendet man an Stelle der Zeichenfolge &#039;1 2 0 0 0&#039; die Zeichenfolge &#039;1 1 0 0 0&#039; bekommt man die Temperatur des Sensors angezeigt.&lt;br /&gt;
&lt;br /&gt;
Das Skript muss zwingend verbessert werden, da derzeit nur der Abstand in cm zum Wasserspiegel ausgegeben wird und nicht das enthaltene Volumen. Hierzu braucht man entweder (da meist liegende Zylinder oder Kugeln zum Einsatz kommen) etwas Mathematik oder man nutzt eine Tabelle in Form einer CSV-Datei. Ich habe bereits letzteres in Vorbereitung aber noch nicht in das Skript eingebaut.&lt;br /&gt;
&lt;br /&gt;
-- wird fortgesetzt&lt;br /&gt;
--&amp;lt;a href=&amp;quot;/w/index.php?title=Benutzer:Mick&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Benutzer:Mick (Seite nicht vorhanden)&amp;quot;&amp;gt;Mick&amp;lt;/a&amp;gt; 00:03, 21. Jan. 2012 (CET)&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Uhr_auf_FHEM-Seite&amp;diff=1226</id>
		<title>Uhr auf FHEM-Seite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Uhr_auf_FHEM-Seite&amp;diff=1226"/>
		<updated>2013-05-10T20:54:30Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Das &amp;quot;lächelnde Haus&amp;quot; ist natürlich das FHEM-Logo. Doch könnte es ja sein, dass eine eher nüchterne Seitendarstellung gewünscht ist, etwa, indem dort eine …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das &amp;quot;lächelnde Haus&amp;quot; ist natürlich das FHEM-Logo. Doch könnte es ja sein, dass eine eher nüchterne Seitendarstellung gewünscht ist, etwa, indem dort eine sekundengenaue Uhr eingeblendet wird.&lt;br /&gt;
&lt;br /&gt;
Dazu sind - bei Verwendung von pgm2 - folgende Schritte vorzunehmen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.Modifikation der Datei svg.js&#039;&#039;&#039;Ans Ende wird der folgende Code gestellt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;function GetClock(){&lt;br /&gt;
 d = new Date();&lt;br /&gt;
 nhour = d.getHours();&lt;br /&gt;
 nmin  = d.getMinutes();&lt;br /&gt;
 if(nmin &amp;amp;lt;= 9){nmin=&amp;quot;0&amp;quot;+nmin}&lt;br /&gt;
 document.getElementById(&#039;logo&#039;).innerHTML=nhour+&amp;quot;:&amp;quot;+nmin;&lt;br /&gt;
 setTimeout(&amp;quot;GetClock()&amp;quot;, 1000);&lt;br /&gt;
}&lt;br /&gt;
window.onload=GetClock;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Selbstverständlich könnte man die Anzeige auf Sekunden ausdehnen, oder noch etwas komplizierter gestalten - der obige Code soll nur als Beispiel dienen. Auch erfolgt die Abfrage hier alle 1000 Millisekunden - das kann man bei reduziertern Genauigkeitsanforderungen auch heraufsetzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Modifikation der Datei style.css&#039;&#039;&#039;(bzw. von &amp;amp;lt;xxx&amp;amp;gt;style.css, wenn man einen anderen als den Default-Style verwendet)&lt;br /&gt;
&lt;br /&gt;
Der Selektor für den Bereich des Logos wird ausgetauscht gegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#logo  { position:fixed; top:30px; left:20px;&lt;br /&gt;
      width:100px; height:105px; text-align:center;&lt;br /&gt;
      font-family:Times-Roman; font-size:xx-large; font-weight:bold;&lt;br /&gt;
      }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Selbstverständlich kann man hier noch verschiedene eigene Attribute einbauen, etwa die Farbe und Schriftgröße an eigene Wünsche anpassen.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Tuxradio_2&amp;diff=1225</id>
		<title>Tuxradio 2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Tuxradio_2&amp;diff=1225"/>
		<updated>2013-05-10T20:54:30Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Hardware == Das 8,5 x 5,5 cm große TuxRadio Version 2 der Firma [http://busware.de/tiki-index.php?page=TuxRadio&amp;quot;&amp;gt;busware.de&amp;lt;/a&amp;gt; ist der Nachfolger des &amp;lt;a h…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware ==&lt;br /&gt;
Das 8,5 x 5,5 cm große TuxRadio Version 2 der Firma [http://busware.de/tiki-index.php?page=TuxRadio&amp;quot;&amp;gt;busware.de&amp;lt;/a&amp;gt; ist der Nachfolger des &amp;lt;a href=&amp;quot;/wiki/TuxRadio&amp;quot; title=&amp;quot;TuxRadio TuxRadio] und kommt in einem Alugehäuse mit einem minimalen Debian-Betriebssystem daher,&lt;br /&gt;
welches auf einer microSDHC-Karte vorinstalliert ist. Verbaut sind ein ARM9 Chip mit 450MHz, 64MB Arbeitsspeicher, ein USB Host, ein CSM 868MHz Radio Modul, ein 10/100MBit LAN&lt;br /&gt;
Anschluss sowie sechs LED von denen vier frei programmiert werden können. Der Stromverbrauch liegt laut Hersteller bei ca. 2 Watt.&lt;br /&gt;
&lt;br /&gt;
== TuxRadio Startup ==&lt;br /&gt;
Die Verbindung zum Router wird über den Lan Anschluss hergestellt.&lt;br /&gt;
Beim ersten booten werden ggf. neue SSH Schlüssel generiert, daher kann dieser Bootvorgang etwas Zeit beanspruchen.&lt;br /&gt;
&lt;br /&gt;
Um auf TuxRadio zugreifen zu können benötigt man auf seinem Computer einen SSH-Clienten.&lt;br /&gt;
Verschiedene dazu geeignete SSH-Clienten findet man für die verschiedenen Betriebssysteme unter [http://www.fhemwiki.de/wiki/Kommandozeilentools Kategorien/Software/Komandozeilentools] erklärt.&lt;br /&gt;
Bei dem gestarteten SSH-Clienten wählt man &amp;quot;verbinden&amp;quot;, in dem geöffneten Fenster SSH, als Rechner gibt man die vom Router zugewiesene IP-Adresse von TuxRadio ein (Erkennbar ist das TuxRadio ggf. an der MAC-Adresse die mit A4:50:55... beginnt).&lt;br /&gt;
Benutzername ist &amp;quot;root&amp;quot; das Passwort lautet &amp;quot;busware&amp;quot; und sollte als erstes geändert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;passwd root&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Jetzt wird man zweimal zur Eingabe des neuen Passwortes aufgefordert. Ist beide Male das Passwort korrekt eingegeben worden, wird die erfolgreiche Änderung bestätigt.&lt;br /&gt;
&lt;br /&gt;
Danach sollte eine Aktualisierung des Systems mit folgenden Befehlen durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;apt-get update&lt;br /&gt;
apt-get upgrade&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Aktualisierungen sollten regelmäßig durchgeführt werden, um immer auf dem aktuellen Stand zu sein.&lt;br /&gt;
&lt;br /&gt;
== Fhem aufrufen ==&lt;br /&gt;
Fhem ist bereits vorinstalliert und der integrierte CUL versieht auch schon seinen Dienst,&lt;br /&gt;
über den Browser kann mit &#039;&#039;&#039;http://&amp;amp;lt;IP-Adresse_von_TuxRadio&amp;amp;gt;:8083/fhem&#039;&#039;&#039;auf die Bedienoberfläche von fhem zugegriffen werden.&lt;br /&gt;
Ein &amp;quot;updatefhem&amp;quot; ist zu empfehlen, um mit der neuesten Version arbeiten zu können.&lt;br /&gt;
&lt;br /&gt;
Folgende Pfade werden standardmäßig genutzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable toptextcells&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Inhalt&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Pfad&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LogFiles &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; /var/log/fhem&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Programm &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; /usr/share/fhem&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; fhem.cfg &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; /etc/&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Falls Fhem mit &amp;quot;shutdown&amp;quot; beendet wurde lässt es sich wie folgt von der Shell aus starten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/etc/init.d/fhem start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beenden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/etc/init.d/fhem stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Status:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/etc/init.d/fhem status&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== LED ==&lt;br /&gt;
Die vier LED an der Vorderseite lassen sich frei programmieren, im Auslieferungszustand zeigt die&lt;br /&gt;
obere linke LED einen Heartbeat an und die darunter liegende LED zeigt Lese-/Schreibvorgänge auf der SD-Karte an.&lt;br /&gt;
&lt;br /&gt;
Beispiel obere rechte LED anschalten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo 1 &amp;amp;gt; /sys/class/leds/ro:green/brightness&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beispiel obere rechte LED ausschalten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo 0 &amp;amp;gt; /sys/class/leds/ro:green/brightness&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die LED sind wie folgt benannt:&lt;br /&gt;
lo:green ro:green&lt;br /&gt;
lu:orange ru:orange&lt;br /&gt;
&lt;br /&gt;
== RFXtrx433 ==&lt;br /&gt;
Soll der RFXtrx433 der Firma [http://www.rfxcom.com/transceivers.htm RFXCOM] mit TuxRadio V2 verwendet werden ist wie folgt vorzugehen:&lt;br /&gt;
&lt;br /&gt;
in der Datei /etc/modules ist eine neue Zeile hinzuzufügen damit der Treiber beim booten geladen wird:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ftdi_sio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit der Name des USB-Gerätes bei jedem ein und ausstecken identisch bleibt sollte eine Datei in &lt;br /&gt;
/etc/udev/rules.d angelegt werden z.B. 10-udev.rules die folgenden Inhalt hat:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ATTRS{product}==&amp;amp;quot;RFXtrx443&amp;amp;quot;, ATTRS{manufacturer}==&amp;amp;quot;RFXCOM&amp;amp;quot;, SYMLINK+=&amp;amp;quot;usbRFX&amp;amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nach einem reboot &amp;lt;nowiki&amp;gt;shutdown -r now&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und der entsprechenden Konfiguration von Fhem sollte der RFXtrx nun Daten melden. Sollte im Logfile &amp;quot;Permission denied&amp;quot; auftauchen, so ist die Berechtigung&lt;br /&gt;
des USB Devices so zu ändern, dass der Benutzer FHEM darauf Zugriff hat.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== E-Mail Konfiguration ==&lt;br /&gt;
Empfehlenswert ist die Einrichtung einer E-Mailfunktionalität z.B. mittels Exim4:&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;aptitude install exim4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dpkg-reconfigure exim4-config&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Exim4 wird typischerweise mit der Einstellung &amp;quot;smarthost&amp;quot; konfiguriert, entsprechende Beispiele&lt;br /&gt;
finden sich bei Google mit den Suchwörtern: debian exim4 smarthost gmail (oder GMX etc...)&lt;br /&gt;
&lt;br /&gt;
Testen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;echo &amp;amp;quot;test nachrichtentext&amp;amp;quot; | mail -s &amp;amp;quot;test betreff&amp;amp;quot; myusername@myAnbieter.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Logfile zur Fehleranalyse:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tail /var/log/exim4/mainlog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anzeigen ob Mails nicht versendet werden konnten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mailq&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Alle frozen Mails löschen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;mailq | awk &#039;/frozen/{print &amp;amp;quot;exim4 -Mrm &amp;amp;quot;$3}&#039; | /bin/sh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[http://busware.de/tiki-index.php?page=TuxRadio2_Installation Busware Tiki]&amp;lt;/nowiki&amp;gt; (Information des Herstellers zur Installation, Version vom 08. Oktober 2012, abgerufen 09. Oktober 2012)&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[http://www.tickerverbot.de/tuxradio-mit-fhem-neu-aufsetzen HowTo zum Neuaufsetzen des Tuxradio 2 FHEM-Systems]&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=1224</id>
		<title>SYSSTAT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=1224"/>
		<updated>2013-05-10T20:54:27Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;FHEM-Modul sysstat&amp;#039;&amp;#039;&amp;#039; = Vorbemerkungen = Seit dem 06.02.2013 gibt es ein neues und offizielles FHEM-Modul namens &amp;#039;&amp;#039;sysstat&amp;#039;&amp;#039;. Es ermöglicht das Logging und…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FHEM-Modul sysstat&#039;&#039;&#039;&lt;br /&gt;
= Vorbemerkungen =&lt;br /&gt;
Seit dem 06.02.2013 gibt es ein neues und offizielles FHEM-Modul namens &#039;&#039;sysstat&#039;&#039;. Es ermöglicht das Logging und die (grafische) Anzeige der Auslastung (load) ihres &#039;&#039;&#039;Linux&#039;&#039;&#039;-Systems, auf dem FHEM läuft. Daneben ermöglicht es auch die gleichen Auswertungsmöglichkeiten für die Belegung (in Bytes oder Prozent) einer von Ihnen anzugebenden Festplatten-Partition. Gleiches kann auch mit einem Remote-System durchgeführt werden (per SSH mittels Key).&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zum Modul und zur Syntax finden Sie in der [http://fhem.de/commandref.html#SYSSTAT commandref].&lt;br /&gt;
&lt;br /&gt;
= Beispiel =&lt;br /&gt;
Die Definitionen und Eigenschaften (Attribute) müssen von Hand in der &#039;&#039;fhem.cfg&#039;&#039;eingetragen werden, da hier der &#039;&#039;autocreate&#039;&#039;-Mechanismus nicht greift (greifen kann).&lt;br /&gt;
&lt;br /&gt;
Aus der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define BBxM SYSSTAT 120 600&lt;br /&gt;
attr BBxM filesystems /dev/mmcblk0p2&lt;br /&gt;
attr BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
attr BBxM showpercent 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Anmerkungen:&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Load-Daten werden alle 120 (Default-Wert: 60) &#039;&#039;&#039;Sekunden&#039;&#039;&#039; gelesen und es wird dabei die Partition &#039;&#039;/dev/mmcblk0p2&#039;&#039; alle 600 Sekunden überwacht. Die Belegung der Partition wird in Prozent angegeben. Wie die Partitionen auf ihrem Linux-System benannt sind erfahren Sie z.B. über den &#039;&#039;mount&#039;&#039;-Befehl.&lt;br /&gt;
* Wird kein Auslese-Interval für die Partitionen angegeben, so wird dieses auf den ersten Wert &amp;lt;ins&amp;gt;mit 60 multipliziert&amp;lt;/ins&amp;gt; gesetzt. So würde im o.a. Beispiel aus dem ersten Wert 120 (für das System-load) ein Auslesewert von 7.200 Sekunden, also 120 Minuten bzw. 2 Stunden.&lt;br /&gt;
&lt;br /&gt;
Weitere Definitionen in der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_BBxM FileLog /opt/fhem/log/BBxM-%Y-%m.log BBxM&lt;br /&gt;
attr FileLog_BBxM archivedir /opt/fhem/archive/&lt;br /&gt;
attr FileLog_BBxM logtype sysstat:Plot,text&lt;br /&gt;
attr FileLog_BBxM nrarchive 1&lt;br /&gt;
attr FileLog_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
define Stats_BBxM weblink fileplot FileLog_BBxM:mysysstat:CURRENT       &amp;amp;lt;&amp;amp;lt;&amp;amp;lt;==== siehe unten&lt;br /&gt;
attr Stats_BBxM alias Systemlast&lt;br /&gt;
attr Stats_BBxM label &amp;quot;Systemlast von BBxM Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}&amp;quot;&lt;br /&gt;
attr Stats_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
= Plot =&lt;br /&gt;
Standard ist die Angabe von &#039;&#039;define Stats_BBxM weblink fileplot FileLog_BBxM:&#039;&#039;&#039;sysstat&#039;&#039;&#039;:CURRENT&#039;&#039;. Dadurch wird nur die Systemlast grafisch (Plot) dargestellt. Wenn Sie auch die Belegung einer Partition im Plot sehen wollen, können Sie folgende Datei (die Sie sich als &#039;&#039;mysysstat.gplot&#039;&#039;unterhalb von &#039;&#039;&amp;amp;lt;Ihr-FHEM-Verzeichnis&amp;amp;gt;/www/gplot&#039;&#039;speichern müssten, damit die o.a. Konfiguration greift) verwenden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############################&lt;br /&gt;
# Display the sysload and diskusage values &lt;br /&gt;
# Corresponding FileLog definition:&lt;br /&gt;
# define deviceLog FileLog ./log/device-%Y-%m.log device&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set ylabel &amp;amp;quot;Load&amp;amp;quot;&lt;br /&gt;
set y2label &amp;amp;quot;/ belegt&amp;amp;#160;%&amp;amp;quot;&lt;br /&gt;
set y2range [0:100]&lt;br /&gt;
#FileLog 4:load:0:&lt;br /&gt;
#FileLog 4:/\x3a:0:&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;/load:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l0 axes x1y1 title &#039;Load&#039; with lines&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;//:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l2fill axes x1y2 title &#039;Disk&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Anmerkungen:&amp;lt;/ins&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Die Zeile &amp;quot;#FileLog 4:/\x3a:0:&amp;quot; muss evtl. an ihre Gegebenheiten angepasst werden, wenn Sie nicht das root-Volume überwachen (wollen).&lt;br /&gt;
* Beachten Sie, dass die Sequenz &amp;quot;\x3a&amp;quot; der vorgenannten Zeile den Filter auf &amp;quot;/:&amp;quot; legt. Eine Angabe wie &amp;quot;#FileLog 4:/:&#039;&#039;&#039;:&#039;&#039;&#039;0:&amp;quot; funktioniert nicht, da der Doppelpunkt eine besondere Bedeutung hat. Er muss also &amp;quot;maskiert&amp;quot; werden. Die &#039;&#039;awk&#039;&#039;-Sequenz (&amp;quot;awk &#039;//:/&amp;quot;) ist für die Plot-Ausgabe nicht relevant.&lt;br /&gt;
* Regulär würde ein &amp;quot;#FileLog 4:/:0:&amp;quot; für die root-Partition ausreichen (was den Filter auf &amp;quot;/&amp;quot; legt), aber spätestens, wenn Sie ein 2. Volume (z.B. &amp;quot;/mount/usb&amp;quot;) im Plot anzeigen wollen, trifft der Filter &amp;quot;/&amp;quot; auf beide Volumes zu. Dies führt dann zu eigenartigen Effekten im Plot.&lt;br /&gt;
= Links =&lt;br /&gt;
FHEM-Forum: [http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10888&amp;amp;amp;start=0&amp;amp;amp;rid=417 Ankündigung als offizielles Modul]&lt;br /&gt;
&lt;br /&gt;
FHEM-Forum: [http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10573&amp;amp;amp;start=0&amp;amp;amp;rid=417 Inoffizielles Modul]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Synology_NAS&amp;diff=1223</id>
		<title>Synology NAS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Synology_NAS&amp;diff=1223"/>
		<updated>2013-05-10T20:54:22Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „There is a German version of this description already under FHEM auf dem Synology DS408.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is a German version of this description already under [[FHEM auf dem Synology DS408]].&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=1221</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=1221"/>
		<updated>2013-05-10T20:54:21Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Lichtsteuerung per sunset / sunrise&amp;#039;&amp;#039;&amp;#039; == Voraussetzungen == In der &amp;#039;&amp;#039;fhem.cfg&amp;#039;&amp;#039;müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -unterga…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039;müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039;ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es &amp;lt;nowiki&amp;gt;[https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group]&amp;lt;/nowiki&amp;gt; entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Squeezebox&amp;diff=1218</id>
		<title>Squeezebox</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Squeezebox&amp;diff=1218"/>
		<updated>2013-05-10T20:54:12Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Um eine Logitech Squeezebox (ein Netzwerk-Musikplayer) fernzusteuern muss diese mit einem Logitech Media Server verbunden sein. (Weitere Informationen wie man …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um eine Logitech Squeezebox (ein Netzwerk-Musikplayer) fernzusteuern muss diese mit einem Logitech Media Server verbunden sein. (Weitere Informationen wie man die Squeezebox mit einem Server verbindet findet man auf [http://www.mysqueezebox.com/download MySqueezeBox.de].)&lt;br /&gt;
&lt;br /&gt;
Getestet wurde das folgende auf einer FB7390 mit FHEM [[AVM Fritz!Box&amp;quot; class=&amp;quot;mw-redirect]].&lt;br /&gt;
&lt;br /&gt;
Einfach in ein Utils Skript ([[99 myUtils anlegen]]) folgende Funktion einfügen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub squeezebox($) {&lt;br /&gt;
 my ($state) = @_;&lt;br /&gt;
 if ($state eq &amp;amp;quot;on&amp;amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
  system(&amp;amp;quot;wget -O /dev/null -q http://[SqueezeboxServerIP]:[SqueezeboxServerPort]/status.html?p0=play&amp;amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 else&lt;br /&gt;
 {&lt;br /&gt;
  system(&amp;amp;quot;wget -O /dev/null -q http://[SqueezeboxServerIP]:[SqueezeboxServerPort]/status.html?p0=power&amp;amp;amp;p1=0&amp;amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ein Aufruf erfolgt mit &amp;lt;code&amp;gt;{ squeezebox(&amp;quot;on&amp;quot;) }&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;{ squeezebox(&amp;quot;off&amp;quot;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hinweise =&lt;br /&gt;
* In dem Skript muss die IP sowie der Port ersetzt werden. Der Standardport ist 9000.&lt;br /&gt;
* Es gibt noch weitere Befehle um die Squeezebox zu steuern (Lautstärke erhöhen, Pause, Stop,...)&lt;br /&gt;
** Lautstärke setzen: &amp;lt;code&amp;gt;http://[SqueezeboxServerIP]:[SqueezeboxServerPort]/status.html?p0=mixer&amp;amp;amp;p1=volume&amp;amp;amp;p2=YY&amp;lt;/code&amp;gt;, wobei YY die Lautstärke auf einer Skala von 0-100 ist.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Falls mehrere Squeezeboxen mit dem Server verbunden sind, kann mittels Parameter &amp;lt;code&amp;gt;&amp;amp;amp;player=XX%3AXX%3AXX%3AXX%3AXX%3AXX&amp;lt;/code&amp;gt; eine spezielle verwendet werden. XX= MAC-Adresse der Squeezebox. &lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Mehr Befehle können aus den Links der Statusseite ausgelesen werden: &amp;lt;code&amp;gt;http://[SqueezeboxServerIP]:[SqueezeboxServerPort]/status.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
= Quelle =&lt;br /&gt;
Grundlagen in folgendem Beitrag entdeckt: [http://www.squeezebox-forum.de/viewtopic.php?f=13&amp;amp;amp;t=1521#p12286 [1]]&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SML&amp;diff=1217</id>
		<title>SML</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SML&amp;diff=1217"/>
		<updated>2013-05-10T20:53:19Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Einleitung == Das Smart Metering Language (SML, auf XML basierende Syntax) Modul (&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;70_SML.pm&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;) ist ein Modul zur Auswertung von über LAN (TCP/IP) a…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Das Smart Metering Language (SML, auf XML basierende Syntax) Modul (&#039;&#039;&#039;&#039;&#039;70_SML.pm&#039;&#039;&#039;&#039;&#039;) ist ein Modul zur Auswertung von über LAN (TCP/IP) abfragbaren Stromzählern.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzung ==&lt;br /&gt;
Der Stromzähler muß von FHEM aus über das Netzwerk erreichbar sein, üblich ist der Port 80, es ist aber auch jeder andere Port denkbar.&lt;br /&gt;
&lt;br /&gt;
Zur Zeit bekannte Stromzähler, die abgefragt werden können:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Intelligenter Strom Zähler&amp;quot; (ENBW)&lt;br /&gt;
* &amp;quot;Sparzähler&amp;quot; (Yellow Strom)&lt;br /&gt;
== Benutzung ==&lt;br /&gt;
Die Definition eines SML Devices erfolgt mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; SML &amp;amp;lt;host&amp;amp;gt; &amp;amp;lt;port&amp;amp;gt; [&amp;amp;lt;interval&amp;amp;gt; [&amp;amp;lt;timeout&amp;amp;gt;]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wobei &amp;amp;lt;host&amp;amp;gt; der Hostname und &amp;amp;lt;port&amp;amp;gt; der angegebene TCP Port des Zählers sind.&lt;br /&gt;
&lt;br /&gt;
Das &amp;amp;lt;interval&amp;amp;gt; ist per default 300 sec. Das bedeutet, es wird der Durchschnitt aus den letzten 300 sec (5 min) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Der &amp;amp;lt;timeout&amp;amp;gt; gibt an, wie lange ein Verbindungsaufbau versucht wird, default ist hier 4 sec.&lt;br /&gt;
&lt;br /&gt;
Zählerstand einzutragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;amp;lt;name&amp;amp;gt; TOTALPOWER &amp;amp;lt;wert&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Loggen ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SML_log FileLog /var/log/fhem/enbw-%Y.log sml:.*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
So schaut dann eine log Zeile aus die pro intervall erzeugt wird:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-08-08_19:03:08 enbw min: 441 max: 1935 last: 672 avg: 771.35 day: 5.124356 month: 66.241639 year: 11834.708207 total: 11834.708207&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Day: das ist die Tagessumme, und wird um 24 Uhr wieder auf 0 KW gesetzt.&lt;br /&gt;
Month: das ist die Monatssumme und wird jeden Monat wieder auf 0 KW gesetzt.&lt;br /&gt;
Year: das ist die Jahressumme und wird jedes Jahr auf 0 KW gesetzt.&lt;br /&gt;
Total: das ist der Zählerstand und wird nicht verändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plotten ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define wl_ENBW weblink fileplot SML_log:smartmeter:CURRENT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:/w/images/c/ca/SML2.png|808px|link=/wiki/Datei:SML2.png|alt=Beispiel eines SML-Plots]]&lt;br /&gt;
&lt;br /&gt;
smartmeter.gplot:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;&amp;amp;lt;TL&amp;amp;gt;&#039;&lt;br /&gt;
 set y2label &amp;quot;currentPower (W)&amp;quot;&lt;br /&gt;
 set ylabel &amp;quot;totalEnergyDay (kWh)&amp;quot;&lt;br /&gt;
 #FileLog 12:enbw:0:&lt;br /&gt;
 #FileLog 10:enbw:0:&lt;br /&gt;
 #FileLog 8:enbw:0:&lt;br /&gt;
 #FileLog 6:enbw:0:&lt;br /&gt;
 #FileLog 4:enbw:0:&lt;br /&gt;
 plot \&lt;br /&gt;
 &amp;quot;&amp;amp;lt; awk &#039;/enbw:/ {print $1, $12}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
   using 1:2 ls l9 axes x1y1 title &#039;day&#039; with filledcurve,\&lt;br /&gt;
 &amp;quot;&amp;amp;lt; awk &#039;/totalEnergyDay:/ {print $1, $10}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;,\&lt;br /&gt;
   using 1:2 ls l2 axes x1y2 title &#039;averange&#039; with histeps,\&lt;br /&gt;
 &amp;quot;&amp;amp;lt; awk &#039;/totalEnergyDay:/ {print $1, $8}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;,\&lt;br /&gt;
   using 1:2 ls l3 axes x1y2 title &#039;last&#039; with histeps,\&lt;br /&gt;
 &amp;quot;&amp;amp;lt; awk &#039;/totalEnergyDay:/ {print $1, $6}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;,\&lt;br /&gt;
   using 1:2 ls l1 axes x1y2 title &#039;max&#039; with histeps,\&lt;br /&gt;
 &amp;quot;&amp;amp;lt; awk &#039;/totalEnergyDay:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;,\&lt;br /&gt;
   using 1:2 ls l0fill axes x1y2 title &#039;min&#039; with histeps&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kontakt ==&lt;br /&gt;
Bei Problemen/Fragen bitte per Mail an: gabriel AT bentele DOT de, wenden.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Slider_f%C3%BCr_HM-Rollladensteuerung_anzeigen&amp;diff=1216</id>
		<title>Slider für HM-Rollladensteuerung anzeigen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Slider_f%C3%BCr_HM-Rollladensteuerung_anzeigen&amp;diff=1216"/>
		<updated>2013-05-10T20:53:17Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Wenn eine Homematic Rolladensteuerung gepaart wird, wird sie normalerweise wie ein Schalter angezeigt, also mit on off. Der State ist aber eine Prozentzahl, al…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wenn eine Homematic Rolladensteuerung gepaart wird, wird sie normalerweise wie ein Schalter angezeigt, also mit on off. Der State ist aber eine Prozentzahl, allerdings wird bei ganz oben &amp;quot;off&amp;quot; und bei ganz unten &amp;quot;on&amp;quot; angezeigt. Da die Icons für &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; die Glühbirne sind, werden diese auch hier angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/2/22/Rolladen_switches.png|247px|link=/wiki/Datei:Rolladen_switches.png|alt=Rolladen switches.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UP / Down Buttons ==&lt;br /&gt;
Wenn man lieber einen Rolladen als einen Rolladen darstellen möchte, dann kann mann die icons ändern. Dazu wird zuerst das eventMap des devices geändert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Gerätename&amp;amp;gt; eventMap on:down off:up&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun kann man neue icons in den Ordner für die Bilder legen (auf meiner Fritzbox ist das \\Fritz!nas\fritz.nas\fhem\www\images\default), die down.png und up.png heißen und wie Rolläden aussehen (Achtung, muss noch in up.png und down.png umbenannt werden, sonst geht&#039;s nicht!):&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/a/a5/Blind_Up.png|28px|link=/wiki/Datei:Blind_Up.png|alt=Blind Up.png]][[File:/w/images/7/72/Blind_Down.png|28px|link=/wiki/Datei:Blind_Down.png|alt=Blind Down.png]]&lt;br /&gt;
Nun wird der Zustand schon mal nicht mehr durch Glühbirnen angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/2/23/Roll%C3%A4den_up_down.png|251px|link=/wiki/Datei:Roll%C3%A4den_up_down.png|alt=Rolläden up down.png]]&lt;br /&gt;
Wer dies so ausreichend findet, kann hier aufhören. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Slider ==&lt;br /&gt;
Möchte man anstelle der Schalter für &amp;quot;ganz nach unten&amp;quot; oder &amp;quot;ganz nach oben&amp;quot; lieber einen slider anzeigen, so kann man diesen entweder in den Gerätedetails finden oder direkt auf dem Raum anzeigen lassen. Dazu muss das Attribut WebCMD gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Gerätename&amp;amp;gt; webCmd pct&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann wird anstelle der Schalter ein slider angezeigt:&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/d/de/Rolladen_slider.png|457px|link=/wiki/Datei:Rolladen_slider.png|alt=Rolladen slider.png]]&lt;br /&gt;
Ich empfehle, die eventMap für die Verwendung eines sliders anders zu setzen, da sonst der slider aus unbekannten Gründen bei on auf 0 springt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Gerätename&amp;amp;gt; eventMap on:100% off:0%&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um wieder die richtigen Icons zu erhalten, ändern wir einfach die devStateIcons:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Gerätename&amp;amp;gt; devStateIcon 0%:up 100%:down&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Achtet beim Ersetzen von &amp;amp;lt;Gerätename&amp;amp;gt; genau auf Eure Groß- und Kleinschreibung, sonst geht&#039;s nicht.&lt;br /&gt;
&lt;br /&gt;
== Prozentleiste ==&lt;br /&gt;
Nun noch eine letzte Möglichkeit: Eine Prozentleiste, auf der man direkte Prozentwerte tippen kann, wenn der slider nicht gefällt.&lt;br /&gt;
&lt;br /&gt;
Dazu wird ebenfalls ein webCmd Attribut gesetzt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr &amp;amp;lt;Gerätename&amp;amp;gt; webCmd stop:up:90:80:70:60:50:40:30:20:10:down&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/e/e7/Roll%C3%A4den_Prozentleiste.png|656px|link=/wiki/Datei:Roll%C3%A4den_Prozentleiste.png|alt=Rolläden Prozentleiste.png]]&lt;br /&gt;
Da es von dem Anschluss der Motorwicklungen des Rolladenantriebs abhängig ist, wo 0% und wo 100% ist, kann es sein, dass die gezeigten Icons für Eure Installation falschherum sind. Daher entweder up/down umdrehen oder die beiden Anschlussleitungen des Motors tauschen...&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sensoren_mit_Schaltkontakt,_Anschluss_an_FS-20&amp;diff=1215</id>
		<title>Sensoren mit Schaltkontakt, Anschluss an FS-20</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sensoren_mit_Schaltkontakt,_Anschluss_an_FS-20&amp;diff=1215"/>
		<updated>2013-05-10T20:53:15Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= Sensoren mit Schaltkontakt, Anschluss an FS-20 = == Motiv == Das FS-20 System bietet nur eine eingeschränkte Auswahl an Sensoren an. Andererseits gibt es ei…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sensoren mit Schaltkontakt, Anschluss an FS-20 =&lt;br /&gt;
== Motiv ==&lt;br /&gt;
Das FS-20 System bietet nur eine eingeschränkte Auswahl an Sensoren an. Andererseits gibt es eine große Auswahl an kostengünstigen Sensoren, die aber nicht &amp;quot;funkfähig&amp;quot; sind. Gesucht wird deshalb eine Kopplungsmöglichkeit zum FS-20 System, um diese Sensorik über das FS-20 System und FHEM auswerten zu können. &lt;br /&gt;
&lt;br /&gt;
Die hier dargestellte Lösung stellt eine einfache Möglichkeit dar, um den Schaltkontakt von 230V AC bis 12 V DC Sensoren an den Sender FS20 S4U (siehe [[FS20 S4U Unterputz-Sender]]) anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Getestet worden sind folgende Sensoren mit Schaltkontakt:&lt;br /&gt;
&lt;br /&gt;
* Bewegungsmelder (Baumarkt)&lt;br /&gt;
* Wassermelder (M158, Fa. Kemo)&lt;br /&gt;
* Rauchmelder( ABUS RM1000)&lt;br /&gt;
* Thermostatschalter zur Temperaturüberwachung z.B. bei Heizungsausfall(Finder 7T.81)&lt;br /&gt;
== Problem ==&lt;br /&gt;
Das FS-20 System bietet als Sender den 2/4-Kanal-Unterputz-Sender FS20 S4U an. Dieser Sender kann im 4-Kanal-Betrieb bis zu 4 Taster auswerten.&lt;br /&gt;
&lt;br /&gt;
Ist der potentialfreie Schaltkontakt eines Sensors direkt am Tastereingang des Funksenders angeschlossen, so sendet dieser bei Betätigung ständig ein „Dimupdown“.&lt;br /&gt;
&lt;br /&gt;
Sind aber mehrere Schaltkontakte von Sensoren direkt an dem Sender angeschlossen und dauerhaft betätigt, so hat der Sender leider die Eigenschaft, nicht für alle Schaltkontakte das „Dimupdown“- Kommando zu senden, so dass die FHEM-Steuerung als Empfänger nicht von jedem Sensor die Schalterbetätigung mitbekommt. Informationen gehen also verloren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/thumb/c/c9/Schaltung230VAC.JPG/200px-Schaltung230VAC.JPG|200px|link=/wiki/Datei:Schaltung230VAC.JPG|alt=]]&amp;lt;a href=&amp;quot;/wiki/Datei:Schaltung230VAC.JPG&amp;quot; class=&amp;quot;internal&amp;quot; title=&amp;quot;vergrößern&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/w/skins/common/images/magnify-clip.png&amp;quot; width=&amp;quot;15&amp;quot; height=&amp;quot;11&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
Prinzipschaltung, Anschluss eines 230V AC-Sensors mit Schaltkontakt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:/w/images/thumb/a/ac/Schaltung12VDC.JPG/200px-Schaltung12VDC.JPG|200px|link=/wiki/Datei:Schaltung12VDC.JPG|alt=]]&amp;lt;a href=&amp;quot;/wiki/Datei:Schaltung12VDC.JPG&amp;quot; class=&amp;quot;internal&amp;quot; title=&amp;quot;vergrößern&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/w/skins/common/images/magnify-clip.png&amp;quot; width=&amp;quot;15&amp;quot; height=&amp;quot;11&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
Prinzipschaltung, Anschluss eines 12V DC-Sensors mit Schaltkontakt&lt;br /&gt;
&lt;br /&gt;
== Lösung ==&lt;br /&gt;
Der Schaltkontakt wird über einen asynchronen Taktgeber an den Tastereingang geführt. Ist der Schaltkontakt (z.B. bei einem Thermostat wegen Untertemperatur) dauerhaft betätigt, emuliert der Taktgeber daraus ein periodisches „ Tippen auf einen Taster“.&lt;br /&gt;
&lt;br /&gt;
Vorteil: Sollte tatsächlich mal ein Takt nicht gesendet und somit „verloren gehen“, wird das Ereignis nach Beendigung der Pausenzeit erneut gesendet . Aufgrund dieser Redundanz ist eine hohe Zuverlässigkeit gegeben.&lt;br /&gt;
&lt;br /&gt;
Erprobt worden ist diese Schaltung mit asynchronen Taktgebern von Finder, Typ 80.91. &lt;br /&gt;
&lt;br /&gt;
Dieser Taktgeber bietet weitere Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Die Impulsdauer und die Pausenzeit zwischen den Impulsen ist einstellbar&lt;br /&gt;
* Der Taktgeber arbeitet auch bei 12V DC (Umin = 10.8 V AC/DC)&lt;br /&gt;
* Der Taktgeber wird auf einer Hutschiene befestigt, so dass dieser in jeden Hausverteilerkasten eingebaut werden kann.&lt;br /&gt;
&lt;br /&gt;
Als 12V DC –Hutschienennetzteil könnte das Gerät DSP10-12 von TDK-Lambda verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(HINWEIS: Zu Arbeiten an netzspannungsführenden Teilen sind nur Personen berechtigt, die über eine geeignete Ausbildung verfügen)&#039;&#039;&lt;br /&gt;
== Praktischer Einsatz dieser Schaltung ==&lt;br /&gt;
* Der Sender FS20 S4U wird im 4-Kanal-Betrieb betrieben.&lt;br /&gt;
* Die Impulsdauer wird so klein wie möglich eingestellt. Dann liefert der Sender nur ein einziges „Toggle“- oder &amp;quot;DimUpDown&amp;quot; Kommando pro Impuls, wenn der Schaltkontakt geschlossen ist.&lt;br /&gt;
* Die Pausenzeit sollte nach der Priorität eingestellt werden: (z.B. 2 min bei wichtigeren Meldungen wie z.B. Rauchmelder, 10 min bei unwichtigeren, wie z.B. Untertemperatur)&lt;br /&gt;
== Programmauswertung ==&lt;br /&gt;
Beispiel: Erkennt ein Wasssermelder Feuchtigkeit, so sollen über die Fritzbox 7390 eine Mail gesendet und 2 Telefonanrufe ausgeführt werden. &lt;br /&gt;
&lt;br /&gt;
Um den Schaltkontakt abzufragen, reicht eine „notify“ Anweisung aus. Diese wird jedes Mal dann aufgerufen, wenn der Schaltkontakt geschlossen ist und der Impulsgeber einen Impuls erzeugt hat.&lt;br /&gt;
&lt;br /&gt;
Sofern die Impulsdauer sehr klein (nahe dem Minimum) eingestellt ist, wird entweder als Ereignis ein „toggle“ oder „dimupdown“ pro Impuls generiert.&lt;br /&gt;
&lt;br /&gt;
Ein Wassermelder könnte in der &#039;&#039;fhem.cfg&#039;&#039;wie folgt ausgewertet werden&amp;amp;#160;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define dvce_HausBekommtNasseFuesse FS20 11111111 1234&lt;br /&gt;
attr dvce_HausBekommtNasseFuesse Alarm&lt;br /&gt;
&lt;br /&gt;
define cm_AlarmWasser notify dvce_HausBekommtNasseFuesse \&lt;br /&gt;
{FritzBoxSendMail(&amp;amp;quot;Wasseralarm&amp;amp;quot;)};;\&lt;br /&gt;
{FritzBoxEmergencyCall()}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Funktionen &#039;&#039;FritzBoxSendMail()&#039;&#039;und &#039;&#039;FritzBoxEmergencyCall()&#039;&#039;können in einer z.B. &#039;&#039;99_MyUtilsUserDef.pm&#039;&#039;(siehe [[99 myUtils anlegen]] ) heißenden Datei wie folgt ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Mail und Telefonanruf ++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
sub&lt;br /&gt;
FritzBoxEmergencyCall ()&lt;br /&gt;
{  &lt;br /&gt;
 InternalTimer(gettimeofday()+5, &amp;amp;quot;FritzBoxCallnr&amp;amp;quot;, &#039;TelefonNr1&#039;, 0); &lt;br /&gt;
 InternalTimer(gettimeofday()+30, &amp;amp;quot;FritzBoxCallnr&amp;amp;quot;, &#039;TelefonNr2&#039;, 0); &lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
sub&lt;br /&gt;
FritzBoxCallnr ($)&lt;br /&gt;
{  &lt;br /&gt;
  my ($callnr) = @_;&lt;br /&gt;
 &lt;br /&gt;
  $callnr = &amp;amp;quot;ATDT&amp;amp;quot;.$callnr.&amp;amp;quot;#&amp;amp;quot;;&lt;br /&gt;
  my $ret = &amp;amp;quot;ATD: &amp;amp;quot; . `echo $callnr | nc 127.0.0.1 1011`&amp;amp;#160;;&lt;br /&gt;
  InternalTimer(gettimeofday()+8, &amp;amp;quot;FritzBoxHangOn&amp;amp;quot;, &amp;amp;quot;&amp;amp;quot;, 0); &lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
sub&lt;br /&gt;
FritzBoxHangOn ()&lt;br /&gt;
{&lt;br /&gt;
  my $ret = &amp;amp;quot; ATH: &amp;amp;quot; . `echo &amp;amp;quot;ATH&amp;amp;quot; | nc 127.0.0.1 1011`&amp;amp;#160;;&lt;br /&gt;
  $ret =~ s,[\r\n]*,,g;    &lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
sub FritzBoxSendMail &lt;br /&gt;
{&lt;br /&gt;
 my $subject = $_[0];&lt;br /&gt;
 system(&amp;amp;quot; /sbin/mailer -s $subject &amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Lothar Wohlgemuth, 24. 10. 2012&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Script_mit_Webschalter_ausl%C3%B6sen&amp;diff=1214</id>
		<title>Script mit Webschalter auslösen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Script_mit_Webschalter_ausl%C3%B6sen&amp;diff=1214"/>
		<updated>2013-05-10T20:53:08Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Aufgabe: == Es soll auf der Weboberfläche einen Schalter geben, der mehrere Lampen zugleich einschaltet. Ausserdem soll diese Aktion auch per Fernbedienung…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: ==&lt;br /&gt;
Es soll auf der Weboberfläche einen Schalter geben, der mehrere Lampen zugleich einschaltet.&lt;br /&gt;
Ausserdem soll diese Aktion auch per Fernbedienung ausgelöst werden können.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
Es seien in FHEM drei Geräte Licht_1 - Licht_3 definiert, also z.b. 3 FS20 Schaltsteckdosen, Unterputzschalter o.ä. oder deren HM-Equivalent.&lt;br /&gt;
&lt;br /&gt;
== Vorgehen: ==&lt;br /&gt;
Zunächst ist ein FS20 Dummy anzulegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht_an FS20 11114444 1a &lt;br /&gt;
attr Licht_an dummy 1 &lt;br /&gt;
attr Licht_an room HAUS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wobei:&lt;br /&gt;
&lt;br /&gt;
11114444 de &lt;br /&gt;
ist der FS20 Hauskode und &amp;quot;1a&amp;quot; ist die Kanaladresse in Hex, also in ELV Notation 12 33 &lt;br /&gt;
&lt;br /&gt;
Das erzeugt auf der Weboberfläche erstmal einen normal aussehenden FS20 Schalter im Raum &lt;br /&gt;
HAUS. &lt;br /&gt;
&lt;br /&gt;
Den kann man auf der Weboberfläche schalten oder auch mit einer Fernbediehnung, die die Werte 11114444 1a hat. &lt;br /&gt;
&lt;br /&gt;
Als nächstes muss ein Script angelegt werden, das auf Betätigung des Schalters reagiert. Dazu nimmt man &amp;quot;notify&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define act_on_Licht_an notify Licht_an {\&lt;br /&gt;
 if (&amp;quot;%&amp;quot; ne &amp;quot;off&amp;quot;) {\&lt;br /&gt;
  fhem(&amp;quot;set Licht_1 on&amp;amp;#160;;; set Licht_2 on&amp;amp;#160;;; set Licht_3 on&amp;quot;)\&lt;br /&gt;
 }\&lt;br /&gt;
  else {\&lt;br /&gt;
  fhem(&amp;quot;set Licht_1 off&amp;amp;#160;;; set Licht_2 off&amp;amp;#160;;; set Licht_2 off&amp;quot;)\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Erläuterungen: ==&lt;br /&gt;
define act_on_Licht_an &lt;br /&gt;
&lt;br /&gt;
es wird eine Aktion definiert die &amp;quot;act_on_Licht_an&amp;quot; heisst. Der Namen hat keine spezielle Bedeutung, er könnte auch &amp;quot;Blabberschnalz33&amp;quot; lauten, aber sprechende Namen sind leichter zu lesen. &lt;br /&gt;
&lt;br /&gt;
notify Licht_an &lt;br /&gt;
&lt;br /&gt;
reagiere wenn der Schalter &amp;quot;Licht_an&amp;quot; betätigt wird. Beachte, dass es egal ist, ob der an- oder ausgeschaltet oder gedimmt wird. Sobald er &#039;&#039;&#039;&#039;irgendwas&#039;&#039;&#039;&#039;macht, wird die folgende Aktion ausgelöst. &lt;br /&gt;
&lt;br /&gt;
{ &lt;br /&gt;
&lt;br /&gt;
was jetzt kommt ist keine reines &amp;quot;FHEM Kommando&amp;quot; mehr, sondern PERL &lt;br /&gt;
&lt;br /&gt;
if ( &lt;br /&gt;
&lt;br /&gt;
prüfen ob der Ausdruck in der Klammer gleich zutrifft, nur dann die Kommandos ausführen. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;%&amp;quot; ne &amp;quot;off&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&amp;quot;%&amp;quot; ist der Wert des letzten Kommandos. Den Kram in der nächsten Klammer NUR machen, wenn dieser Wert nicht gleich (ne = not equal) &amp;quot;off&amp;quot; ist. Mit anderen Worten: Den folgenden Kram nur machen, wenn auf der Weboberfläche ON gedrückt wurde, oder auf der Fernbedienung ein ON oder DIM UP Befehl ausgelöst wurde. Man könnte auch auf (&amp;quot;%&amp;quot; eq &amp;quot;on&amp;quot;) testen. Nachteil ist aber, wenn jemand an der Fernbedienung versehentlich zu lange drückt und damit einen Dimmbefehl auslöst, geht das Licht nicht an! &lt;br /&gt;
&lt;br /&gt;
{ fhem(&amp;quot;set Licht_1 on&amp;amp;#160;;; set Licht_2 on&amp;amp;#160;;; set Licht_3 on&amp;quot;) } &lt;br /&gt;
&lt;br /&gt;
PERL soll FHEM mitteilen, dass FHEM &amp;quot;set Licht_1 on&amp;amp;#160;; set Licht_2 on&amp;amp;#160;; set Licht_3 on&amp;quot; ausführen soll, also alle drei Lampen an. Beachte die Verdoppelung der Semikolons, das ist nötig, weil so PERL mitgeteilt wird, dass die Dinger nicht irgendwelche PERL Bedeutung haben, sondern an FHEM weitergereicht werden sollen; das nennt man &amp;quot;Escapen&amp;quot; &lt;br /&gt;
&lt;br /&gt;
else &lt;br /&gt;
&lt;br /&gt;
Falls der Test am Anfang NICHT erfolgreich war (mit anderen Worten jemand OFF gedrückt hat - egal ob auf Weboberfläche oder Fernbedienung), dann mach was jetzt kommt. &lt;br /&gt;
&lt;br /&gt;
{ fhem(&amp;quot;set Licht_1 off&amp;amp;#160;;; set Licht_2 off&amp;amp;#160;;; set Licht_2 off&amp;quot;) } &lt;br /&gt;
&lt;br /&gt;
PERL soll FHEM mitteilen (etc, analog oben)&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
Ende mit PERL-Kram&lt;br /&gt;
&lt;br /&gt;
== Anmerkungen: ==&lt;br /&gt;
Es ist unerheblich, ob die Aktionen in den Scripten FS20 Aktoren ansprechen oder Licht_1 z.B. eine HomeMatic (HM) Komponente ist. Der Dummyschalter muss auch nicht ein FS20 Schalter sein. Es lassen sich alle Welten beliebig mischen.&lt;br /&gt;
&lt;br /&gt;
Mit den obigen Beispielen lassen sich also z.B. auch HM Komponenten mit einer FS20 Fernbedienung betätigen. Voraussetzung ist jedoch, dass am FHEM Host Funkzentralen für beide Systeme angeschlossen sind, also z.b. zwei [[CUL]], einer in SlowRF Mode und einer im HM Mode, oder ein CUN(O) in SlowRF Mode und ein HM LAN Konfigurationsadapter.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Schalten_von_2_Lampen_mit_einem_Taster&amp;diff=1213</id>
		<title>Schalten von 2 Lampen mit einem Taster</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Schalten_von_2_Lampen_mit_einem_Taster&amp;diff=1213"/>
		<updated>2013-05-10T20:53:08Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Aufgabe == Mit nur einem Taster sollen 2 Stromverbraucher (hier an dem Beispiel von 2 Lampen) der Reihe nach durchgeschaltet werden Dabei können verschiede…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
Mit nur einem Taster sollen 2 Stromverbraucher (hier an dem Beispiel von 2 Lampen) der Reihe nach durchgeschaltet werden&lt;br /&gt;
Dabei können verschiedene Schaltreihenfolgen eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
== Script ==&lt;br /&gt;
Die beiden Lampen werden im Script jeweils als L1 und L2 bezeichnet, der Taster als T1&lt;br /&gt;
&lt;br /&gt;
=== Schaltreihenfolge 1 ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Tastendruck &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Lampe 1 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Lampe 2&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define MyNotify notify T1:Btn1.on.* {if(Value(&amp;quot;L1&amp;quot;) eq &amp;quot;off&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;L2&amp;quot;) eq &amp;quot;off&amp;quot;){fhem &amp;quot;set L1 on&amp;quot;}&lt;br /&gt;
  elsif(Value(&amp;quot;L1&amp;quot;) eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;L2&amp;quot;) eq &amp;quot;off&amp;quot;) {fhem &amp;quot;set L2 on&amp;quot;}&lt;br /&gt;
  elsif(Value(&amp;quot;L1&amp;quot;) eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;L2&amp;quot;) eq &amp;quot;on&amp;quot;) {fhem &amp;quot;set L1 off&amp;quot;} &lt;br /&gt;
  else{fhem &amp;quot;set L1,L2 off&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Schaltreihenfolge 2 ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Tastendruck &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Lampe 1 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Lampe 2&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; an&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; aus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define MyNotify notify T1:Btn1.on.* {if(Value(&amp;quot;L1&amp;quot;) eq &amp;quot;off&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;L2&amp;quot;) eq &amp;quot;off&amp;quot;){fhem &amp;quot;set L1 on&amp;quot;}&lt;br /&gt;
  elsif(Value(&amp;quot;L1&amp;quot;) eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;L2&amp;quot;) eq &amp;quot;off&amp;quot;) {fhem &amp;quot;set L2 on&amp;quot;}&lt;br /&gt;
  else{fhem &amp;quot;set L1,L2 off&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel lässt sich auch für mehr als 2 Stromverbraucher erweitern, allerdings wird die Abfrage dann sehr komplex.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Schalten_mit_mehreren_Bedingungen&amp;diff=1212</id>
		<title>Schalten mit mehreren Bedingungen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Schalten_mit_mehreren_Bedingungen&amp;diff=1212"/>
		<updated>2013-05-10T20:53:07Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Aufgabe: == Der FHT heizung_bad soll morgens mit Aktivierung des Bewegungsmelders piri_schlafzimmer für eineinhalb Stunden die Temperatur auf 23 Grad Celsi…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: ==&lt;br /&gt;
Der FHT heizung_bad soll morgens mit Aktivierung des Bewegungsmelders piri_schlafzimmer für eineinhalb Stunden die Temperatur auf 23 Grad Celsius erhöhen und danach wieder auf 18 Grad absenken.&lt;br /&gt;
&lt;br /&gt;
Allerdings nur, wenn folgende Bedingungen erfüllt sind: &lt;br /&gt;
&lt;br /&gt;
* Es ist zwischen 4:30 Uhr und 9:00 Uhr,&lt;br /&gt;
* der Fensterkontakt Fenster_bad ist &amp;quot;Closed&amp;quot;&lt;br /&gt;
* der Türkontakt tfk_tuer ist &amp;quot;on&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sinn soll sein, bei Bewegung im Schlafzimmer zu möglichen Aufstehzeiten (also z.b. nach dem Wecker greifen) das Bad vorzuheizen, aber nur wenn das Fenster nicht auf ist und die Tür zu (also überhaupt jemand im Schlafzimmer ist, da Tür sonst auf). Die Badheizung soll nach 1,5 Stunden von alleine wieder ausgehen.&lt;br /&gt;
&lt;br /&gt;
Die Abfrage des Fensterkontakts TF ist auch dann sinnvoll wenn er mit dem FHT80b gepaired ist. Beim Öffnen des Fensters wird zwar die aktuelle Temperatur des gepairten FHT auf die Window-Temp abgesenkt, nachträgliche Änderungen werden aber als erwünschte Anhebung der Window-Temp interpretiert und auch ausgeführt. D.H. bei Auslösung des notify würde der Bad-FHT auf 23 Grad stellen, obwohl das Fenster auf ist. Daher muss der TF einzeln abgefragt werden. Dazu den TF trotz pairing vorher mit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Fenster_bad CUL_FHTTK &amp;amp;lt;TF ID&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
definieren.&lt;br /&gt;
Die (fest im TF eingestellte) TF ID ist vor dem Pairen dem Logfile zu entnehmen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FHTTK unknown device &amp;amp;lt;TF ID&amp;amp;gt;, please define it&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
Definierter [[FHT80TF]] (gepairt oder ungepairt mit dem Bad FHT), Türkontakt TFK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define badbenutzung_on notify piri_schlafzimmer:on.* {\ &lt;br /&gt;
 my $hm = sprintf(&amp;quot;%%02d:%%02d&amp;quot;, $hour, $min);;\ &lt;br /&gt;
 if( $hm gt &amp;quot;04:30&amp;quot; &amp;amp;amp;&amp;amp;amp; $hm lt &amp;quot;09:00&amp;quot; &amp;amp;amp;&amp;amp;amp;\ &lt;br /&gt;
   $value{tfk_tuer} eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp;\ &lt;br /&gt;
   $value{Fenster_bad} eq &amp;quot;Closed&amp;quot; &amp;amp;amp;&amp;amp;amp;\ &lt;br /&gt;
  &amp;amp;#160;!$data{badbenutzung_on}) {\ &lt;br /&gt;
  $data{badbenutzung_on} = 1;;\ &lt;br /&gt;
  fhem &amp;quot;set heizung_bad desired-temp 23.0&amp;quot;;;\ &lt;br /&gt;
  fhem &amp;quot;define at_badbenutzung_off at +01:30 trigger &lt;br /&gt;
badbenutzung_off&amp;quot;\ &lt;br /&gt;
 }\ &lt;br /&gt;
} &lt;br /&gt;
define badbenutzung_off notify badbenutzung_off {\ &lt;br /&gt;
  fhem &amp;quot;set heizung_bad desired-temp 18.0&amp;quot;;;\ &lt;br /&gt;
  delete($data{badbenutzung_on})\ &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Erläuterungen ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;notify piri_schlafzimmer:on.*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Filtert die Events des piri_schlafzimmer so, das nur bei Events die mit &amp;quot;on&amp;quot; beginnen notified wird. Die RegEx &amp;quot;.*&amp;quot; akzeptiert dabei auch bieliebige Zeichen (&amp;quot;.&amp;quot;) in beliebiger Menge (&amp;quot;*&amp;quot;) nach &amp;quot;on&amp;quot;, sodasss auch events wie &amp;quot;on-for-timer&amp;quot; auslösen, nicht jedoch z.b. &amp;quot;off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass &amp;quot;;&amp;quot; und &amp;quot;%&amp;quot; innerhalb der perl expressions &amp;quot;{ }&amp;quot;, z.b. &amp;quot;sprintf { } &amp;quot; verdoppelt (escaped) werden müssen , um zu verhindern, dass die Zeichen als FHEM-Kommando interpretiert werden.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Garagentorsteuerung&amp;diff=1211</id>
		<title>Garagentorsteuerung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Garagentorsteuerung&amp;diff=1211"/>
		<updated>2013-05-10T20:53:05Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Aufgabe: == Es soll ein Garagentor geschaltet werden. Die toreigene Steuerung kennt keinen absoluten Zustand, das Betätigen eines Tasters öffnet das Tor w…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: ==&lt;br /&gt;
Es soll ein Garagentor geschaltet werden. Die toreigene Steuerung kennt keinen absoluten Zustand, das Betätigen eines Tasters öffnet das Tor wenn es zu ist und schliesst es, wenn es offen ist. Mit FHEM soll die Möglichkeit geschaffen werden, das Tor in einen definierten Zustand zu bringen. Der Garagentormotor ist so konstruiert, dass eine kurzers Drücken des Tasters ausreicht um den Schliess- Öffenvorgang auszulösen, der Taster muss nicht gehalten werden bis das Tor auf oder zu ist. Das Tor soll über Schaltflächen auf der Weboberfläche von FHEM betätigt werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
Ein Tür/Fensterkontakt, der prüft ob das Tor auf oder zu ist.&lt;br /&gt;
&lt;br /&gt;
Im konkreten Fall sei eine [[FHT80TF]] eingesetzt. &lt;br /&gt;
&lt;br /&gt;
Dieser ist zu definieren:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Einfahrt CUL_FHTTK 3b8823&lt;br /&gt;
attr Einfahrt room Aussen&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ausserdem muss der Schaltaktor definiert werden, der auf Funkbefehl den Taster des Garagentormotors betätigt. (im konkreten Fall wurde ein [[FS20 AS1&amp;quot; class=&amp;quot;mw-redirect]] eingesetzt)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------EinfahrtsTor---------------&lt;br /&gt;
define tor_sw FS20 11114444 23&lt;br /&gt;
attr tor_sw follow-on-for-timer 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==== Erläuterungen: ====&lt;br /&gt;
* define tor_sw FS20 11114444 23&lt;br /&gt;
&lt;br /&gt;
Der Name &amp;quot;tor_sw&amp;quot; ist frei vergeben und könnte auch z.b. &amp;quot;Garagentor_Schalter&amp;quot; heissen. Der Hauscode der Installation ist 11114444, der Schaltaktor hat die Adresse 23. Dies ist der hexadezimale Wert, der der ELV-Notation 1314 entspricht.&lt;br /&gt;
&lt;br /&gt;
* attr tor_sw follow-on-for-timer 1&lt;br /&gt;
&lt;br /&gt;
Weiter unten werden wir für den Aktor &amp;quot; tor_sw FS20 11114444 23&amp;quot; einen Timer definieren, also dafür sorgen, das er für nur eine Sekunde auf ON geschaltet wird. Dies soll den Taster simulieren. Die Anzeige auf dem Webinterface zeigt immer den letzten Schaltzustand. Im Falle eines Timers wäre dieser nach Betätigung &amp;quot;on for timer 1&amp;quot;, man könnte am Webinterface also nicht erkennen, ob der FS20 Schalter aktuelle aus oder an ist.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;follow-on-for-timer 1&amp;quot; sorgt nun dafür, das die Anzeige im Webinterface nach Ende des Timers wieder korrekt auf &amp;quot;off&amp;quot; geht. Die ist für die eigentliche Funktion unerheblich und dient nur einer besseren Visualisierung des Schaltzustandes im Webinterface. Besonders interessant kann dieses Attribut bei Schaltungen ein, die länger als nur eine paar Sekunden dauern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zuletzt müssen Aktionen definiert werden, die als Schalter auf der Weboberfläche von FHEM dienen, bzw. mit einer Fernbedienung ausgelöst werden können.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Einfahrt_ZU FS20 11114444 de&lt;br /&gt;
attr Einfahrt_ZU dummy 1&lt;br /&gt;
attr Einfahrt_ZU room Aussen&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define Einfahrt_AUF FS20 11114444 da&lt;br /&gt;
attr Einfahrt_AUF dummy 1&lt;br /&gt;
attr Einfahrt_AUF room Aussen&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==== Erläuterungen: ====&lt;br /&gt;
* define Einfahrt_ZU FS20 11114444 de&lt;br /&gt;
&lt;br /&gt;
Der Name &amp;quot;Einfahrt_ZU&amp;quot; ist frei vergeben und könnte auch z.b. &amp;quot;Garagentor_Schliessen&amp;quot; heissen. Der Hauscode der Installation ist 11114444, die Aktion hat die Adresse da. Diese Adresse ermöglicht es, die Aktion mittels einer auf diese Adresse programmierten Fernbedienung auszulösen. &amp;quot;de&amp;quot; ist der hexadezimale Wert, der der ELV-Notation 4243 entspricht. &lt;br /&gt;
&lt;br /&gt;
* attr Einfahrt_AUF room Aussen&lt;br /&gt;
&lt;br /&gt;
Ordnet die Schalter auf der Weboberfläche dem Raum &amp;quot;Aussen&amp;quot; zu, dieser könnte auch beliebig anders heissen, er dient nur der Übersichtlichkeit.&lt;br /&gt;
&lt;br /&gt;
* dummy bewirkt, das beim Betätigen des Schalters auf der Weboberfläche keine Funksignal gesendet wird.Dies ist nicht erwünscht, da &amp;quot;Einfahrt_ZU&amp;quot; erst im folgenden die eigentlichen Aktionen auslöst.&lt;br /&gt;
== Script ==&lt;br /&gt;
Es gibt zwei veschiedene Aktionen. Ziel ist es, dass das Einschalten von &amp;quot;Einfahrt_AUF&amp;quot; den Taster des Tores nur betätigt, wenn es zu ist - aber nichts tut, wenn das Tor schon offen ist (respektive &amp;quot;Einfahrt_ZU&amp;quot; entsprechend umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Dazu dienen die folgenden Teile der Konfiguration, die die Aktionen unter bestimmten Bedingungen mit dem definierten Aktor &amp;quot;tor_sw FS20 11114444 23&amp;quot; verbinden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#------Einfahrtstor ZU, wenn es noch auf ist--------&lt;br /&gt;
define act_on_Einfahrt_ZU notify Einfahrt_ZU { if (&amp;quot;$value{Einfahrt}&amp;quot; eq &amp;quot;Open&amp;quot; &amp;amp;amp;&amp;amp;amp; &amp;quot;%&amp;quot; ne &amp;quot;off&amp;quot;) &lt;br /&gt;
{ fhem(&amp;quot;set tor_sw off&amp;amp;#160;;; set tor_sw on-for-timer 1&amp;amp;#160;;; set Einfahrt_AUF off&amp;quot;) } }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#------Einfahrtor auf, wenn es noch zu ist--------&lt;br /&gt;
define act_on_Einfahrt_AUF notify Einfahrt_AUF { if (&amp;quot;$value{Einfahrt}&amp;quot; eq &amp;quot;Closed&amp;quot; &amp;amp;amp;&amp;amp;amp; &amp;quot;%&amp;quot; ne &amp;quot;off&amp;quot;) &lt;br /&gt;
{ fhem(&amp;quot;set tor_sw off&amp;amp;#160;;; set tor_sw on-for-timer 1&amp;amp;#160;;; set Einfahrt_ZU off&amp;quot;) } }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==== Erläuterungen (exemplarisch Einfahrt_ZU, Einfahrt_AUF funktioniert analog): ====&lt;br /&gt;
* act_on_Einfahrt_ZU&lt;br /&gt;
&lt;br /&gt;
Ist nur der Name der anschliessend definierten Aktion. Er könnte auch &amp;quot;MyName77&amp;quot; oder &amp;quot;Blubber&amp;quot; heissen. Es ist aber sicher sinnvoll einen selbsterklärenden Namen zu wählen.&lt;br /&gt;
&lt;br /&gt;
* notify Einfahrt_ZU&lt;br /&gt;
&lt;br /&gt;
Es passiert erst etwas, wenn &amp;quot;Einfahrt_ZU&amp;quot; betätigt wird, also auf Weboberfläche oder Fernbedienung mit passender Adresse eine Taste gedrückt wird. (zur Beachtung: Auch ein Drücken der OFF Taste von &amp;quot;Einfahrt_ZU&amp;quot; auf der Weboberfläche oder entsprechend der linken Taste des Tastenpaares einer Fernbedienung ist eine Betätigung!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {&lt;br /&gt;
&lt;br /&gt;
Alles was jetzt folgt ist eine PERL Expression (PERL Expressions werden in geschweifte Klammern eingefasst.)&lt;br /&gt;
&lt;br /&gt;
* if (&amp;quot;$value{Einfahrt}&amp;quot; eq &amp;quot;Open&amp;quot; &amp;amp;amp;&amp;amp;amp; &amp;quot;%&amp;quot; ne &amp;quot;off&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Falls der Wert von &amp;quot;Einfahrt&amp;quot; (mithin der Zustand des am Anfang definierten Türkontakts FHT80TF) gleich (&amp;quot;eg&amp;quot; = equal) &amp;quot;Open&amp;quot; ist (der FHT80TF kennt die beiden Werte Open und Closed) und zugleich die gedrückte Taste von &amp;quot;Einfahrt_ZU&amp;quot; nicht gleich (&amp;quot;ne&amp;quot; = Not equal) &amp;quot;off&amp;quot; (also &amp;quot;on&amp;quot;) ist, dann mache folgendes...&lt;br /&gt;
Dieser Teil dient dazu, zwei Dinge abzufragen: &lt;br /&gt;
&lt;br /&gt;
1. Ist das Tor überhaupt offen? Durch Abfrage des durch den Türkontakt gemeldeten Zustandes wird dies festgestellt.&lt;br /&gt;
&lt;br /&gt;
2. Wurde die &amp;quot;on&amp;quot; Taste auf dem Webinterface (entsprechend der rechten Taste auf der zugeordneten Fernbedienung) betätigt? Dies wurde durch Abfragen der Variablen &amp;quot;%&amp;quot; erledigt. Diese enthält den Wert der zuletzt betätigten Taste der definierten Aktion. Diese Bedingung ist für die Funktion nicht zwingend. Sie soll nur verhindern, das die Aktion auch dann gestartet wird, wenn die OFF Taste gedrückt wurde, was vielleicht nicht den Erwartungen des Benutzers entspricht.&lt;br /&gt;
&lt;br /&gt;
Die Form &amp;quot;not equal off&amp;quot; klingt zunächst wie ein etwas komplizierter Weg von &amp;quot;equal on&amp;quot;. Diese beiden Abfragen sind aber nicht identisch, da FS20 Dim-Befehle kennt.&lt;br /&gt;
Wenn man die Taste einer Fernbedienung versehentlich länger als 0,4 Sekunden betätigt, wir anstatt einem ON Befehl eine Dim-Befehl gesendet. Wird nun auf Tastendruck &amp;quot;on&amp;quot; geprüft, wird in diesem Falle die Aktion nicht ausgeführt, obwohl der Nutzer die richtige Taste drückte. Der Dim-Befehl hat für eine Garagentorsteuerung keine Bedeutung, wenn er gesendet wird kann das eigentlich nur heissen, das der Nutzer versehentlich zu lange gedrückt hat. Das die Aktion nicht ausgeführt wird, weil der Nutzer die richtige Taste (nur) zu lange gedrückt gehalten hat, entspricht aber nicht den Erwartungen des normalen Nutzers. Es ist daher besser darauf zu testen, dass der Nutzer nicht die falsche Taste gedrückt hat. &lt;br /&gt;
&lt;br /&gt;
Nur wenn beide Bedingungen zutreffen, also das Garagentor offen ist, und die richtige Taste (in beliebieger Länge) gedrückt wurde, werden die nachfolgenden Aktionen ausgeführt:&lt;br /&gt;
&lt;br /&gt;
* { fhem(&amp;quot;set tor_sw off ;; set tor_sw on-for-timer 1 ;; set Einfahrt_AUF off&amp;quot;) } }&lt;br /&gt;
&lt;br /&gt;
FHEM soll nacheinander ausführen:&lt;br /&gt;
&lt;br /&gt;
* set tor_sw off&lt;br /&gt;
&lt;br /&gt;
tor_sw auschalten. Dies ist streng genommen nicht erforderlich, da tor_sw nach Ende der Aktion immer auf OFF stehen sollte. Sollte allerdings aus irgendeinem Grunde tor_sw doch auf ON stehen, hat das nachfolgende kurze Einschalten zur Simulation eines Tastendrucks am Garagentor keine Wirkung. Das vorherige Ausschalten erhöht also die Zuverlässigkeit der Aktion und fängt fehlerhafte oder unklare Zustände und Störungen ab.&lt;br /&gt;
&lt;br /&gt;
* set tor_sw on-for-timer 1&lt;br /&gt;
&lt;br /&gt;
der Aktor tor_sw soll er für eine Sekunde einschalten und dann wieder auschalten. Dies simuliert einen kurzen Tastendruck.&lt;br /&gt;
&lt;br /&gt;
* set Einfahrt_AUF off&lt;br /&gt;
&lt;br /&gt;
Im ganzen &amp;quot;Einfahrt_ZU&amp;quot; Skript wird &amp;quot;Einfahrt_ZU&amp;quot; zwar unter bestimten Bedingungen eingeschaltet (und damit die oben beschriebnen Aktionen ausgeführt) aber nie AUSgeschaltet. Das Script steht also im Webinterface auch nach Ausführung der Aktionen auf ON. Dies hat den Sinn, dass man am Webinterface am Schaltzustand des Scriptes den Zustand des Garagentors erkennen kann. Die Zustandsanzeige von &amp;quot;Einfahrt_ZU&amp;quot; (dargestellt durch eine kleine Glühbirne) leuchtet, wenn das Skript abgelaufen und das Tor somit zu ist. Analog leuchtet die Anzeige des Scripts &amp;quot;Einfahrt_AUF&amp;quot; wenn das Tor zuletzt geöffnet wurde. Damit nicht nach jeweils einer Betätigung beide Scripte im Webinterface beide Glühbirnen leuchten, schalten die Scripte sich gegenseitig aus. &amp;quot;set Einfahrt_AUF off&amp;quot; dient also dazu, nachdem das Tor geschlossen wurde, die Anzeige von &amp;quot;Einfahrt_AUF&amp;quot; auszuschalten. Dies ist eine rein optische Massnahme: Der Schaltzustand von &amp;quot;Einfahrt_AUF&amp;quot; und &amp;quot;Einfahrt_ZU&amp;quot; gibt nur die letzte Betätigung wieder, nicht den tatsächlichen Zustand des Tores. In der Praxis stimmt dies aber überein. Wenn jedoch z.b. jemand das Tor manuell öffnet, stimmt die Anzeige nicht mehr. Die Ausführung von Einfahrt_AUF / Einfahrt_ZU hängt aber nicht von dieser Anzeige ab, sondern prüft den Türkontakt. Dadurch ist die eigentliche Funktion der Scripte nicht gestört.&lt;br /&gt;
&lt;br /&gt;
== Vorteile der besprochenen Konfiguration: ==&lt;br /&gt;
* das Tor kann mit Weboberfläche und Fernbedienung eindeutig auf oder zu gemacht werden, obwohl der Torantrieb selber nur toggelt.&lt;br /&gt;
* der Zustand des Tores muss nicht bekannt sein. Wenn man das Tor öffnen will, genügt es, auf Einfahrt_AUF zu drücken. Wenn das Tor schon auf ist passiert nichts, ansonsten wird es geöffnet.&lt;br /&gt;
* Manuelle Eingriffe am Garagentor selbst behindern die Schaltung nicht.&lt;br /&gt;
* der Zustand des Tores lässt sich in der Regel am Schaltzustand der Aktionen im Webinterface feststellen. Dadurch ist es nicht zwingend, den Türkontakt dem selben Raum zuzuordnen (obwohl es in diesem Beispiel so gemacht wurde)&lt;br /&gt;
* Fehlbedienungen an der Fernbedienung (falsche Taste, zu lange gedrückt) werden abgefangen (dies ist insbesondere ein Vorteil gegenüber der Lösung, mit einer Fernbedienung den FS20 Aktor direkt anzusprechen, in dem ein Timer programmiert wurde. Das Auslösen des Dim-Befehles deaktiviert nämlich FS20 Timer.)&lt;br /&gt;
== Nachteile der besprochenen Konfiguration: ==&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; der Einsatz des [[FHT80TF]]. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* belegt zwei Adressen und damit zwei Tastenpaare auf einer Fernbedienung. Ein Umschreiben auf ein Tastenpaar wäre aber möglich.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=S555TH&amp;diff=1210</id>
		<title>S555TH</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=S555TH&amp;diff=1210"/>
		<updated>2013-05-10T20:52:40Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= Temperatur-/Feuchte-Außensensor = Der batteriebetriebene (2x Mignon) Außensensor S555TH misst die gegenwärtigen Temperatur- und Luftfeuchtigkeitswerte und…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Temperatur-/Feuchte-Außensensor =&lt;br /&gt;
Der batteriebetriebene (2x Mignon) Außensensor S555TH misst die gegenwärtigen Temperatur- und Luftfeuchtigkeitswerte und sendet sie per Funk. So lassen sich auch abgelegene Orte wie Gewächshäuser oder Weinkeller komfortabel zentral überwachen.&lt;br /&gt;
&#039;&#039;Dieser Sensor scheint leider nicht mehr verfügbar zu sein.&#039;&#039;Er wurde von Conrad vertrieben und ist baugleich mit [[S300TH]] von ELV.&lt;br /&gt;
&lt;br /&gt;
== Lieferumfang ==&lt;br /&gt;
* Temperatur-/Feuchte-Außensensor&lt;br /&gt;
* Bedienungsanleitung&lt;br /&gt;
== Highlights ==&lt;br /&gt;
* 868-MHz-Funkübertragung bis 100m&lt;br /&gt;
* Misst Temperatur und Luftfeuchte&lt;br /&gt;
* Passend für Wetterstationen [/w/index.php?title=WS_555&amp;amp;action=edit&amp;amp;redlink=1 WS 555] und [/w/index.php?title=WS_222&amp;amp;action=edit&amp;amp;redlink=1 WS 222]&lt;br /&gt;
* Ideal für Gewächshäuser, Wintergärten und Weinkeller&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; Der Sender kann über [[CUL]] empfangen werden. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; Siehe [[FHEM Command Reference]] unter CUL_WS &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Werte werden alle 3 Minuten gesendet&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Definition in fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; CUL_WS &amp;amp;lt;code&amp;amp;gt; [corr1,corr2]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;code&amp;amp;gt;&#039;&#039;&#039; ist die Einstellung die innerhalb des Sensors durchgeführt werden muss um die einzelnen Sensoren zu unterscheiden. Es können bis zu 8 Sensoren genutzt werden.&lt;br /&gt;
* &#039;&#039;&#039;[corr1,corr2]&#039;&#039;&#039; Hier können Korekturfaktoren eingeben werden um beim Einsatz mehrerer Sensoren alle Sensoren zu kalibrieren.&lt;br /&gt;
** corr1: Korektur des Temperatur Sensors&lt;br /&gt;
** corr2: Korektur des Feuchte Sensors&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Bei einzelnen Produktionsreihen ist es anscheinend nicht möglich, mit den DIP Switches eine andere Adresse als 5 (Voreinstellung) einzustellen. D.H. egal welche Stellung die DIP-Switche haben, der Sensor sendet immer auf Adresse 5.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
Das Geräte ist baugleich mit dem ELV [[S300TH]] Sensor.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=S300TH&amp;diff=1209</id>
		<title>S300TH</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=S300TH&amp;diff=1209"/>
		<updated>2013-05-10T20:52:32Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= Temperatur-/Feuchte-Außensensor = Der batteriebetriebene (2x Mignon) Außensensor S 300 TH von eQ-3 (ELV) misst die gegenwärtigen Temperatur- und Luftfeuch…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Temperatur-/Feuchte-Außensensor =&lt;br /&gt;
Der batteriebetriebene (2x Mignon) Außensensor S 300 TH von eQ-3 (ELV) misst die gegenwärtigen Temperatur- und Luftfeuchtigkeitswerte und sendet sie per Funk.&lt;br /&gt;
&lt;br /&gt;
== Lieferumfang ==&lt;br /&gt;
* Funk-Temperatur- und -Luftfeuchtesensor mit Universal-Aufstell- und -Montagefuß&lt;br /&gt;
* Bedienungsanleitung&lt;br /&gt;
== Highlights ==&lt;br /&gt;
* Passend für Wetterstationen ELV WS 200/300 und ELV WS 300 PC oder Empfangsmodule USB-WDE1 und IPWE 1&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; Der Sender kann über [[CUL]] empfangen werden. &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt; Siehe [[FHEM Command Reference]] unter CUL_WS &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Temperaturbereich: -20°C bis +55°C&lt;br /&gt;
** Auflösung: 0,1˚ C&lt;br /&gt;
** Genauigkeit: ±0,8˚ C&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Luftfeuchtebereich: 5 bis 95% rel. Luftfeuchte&lt;br /&gt;
* Auflösung: 0,1%&lt;br /&gt;
* Genauigkeit: ±5%&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Spannungsversorgung: 2 x 1,5 V, LR6 (AA/Mignon)&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Abmessungen (B x H x T, Sensor): 38 x 138 x 20 mm, Tiefe mit Montagefuß 50 mm&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Sendefrequenz: 868,35 MHz&lt;br /&gt;
* Freifeld-Reichweite: 100 m&lt;br /&gt;
* Datenübertragungszyklus: 3 Min.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Definition in fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; CUL_WS &amp;amp;lt;code&amp;amp;gt; [corr1,corr2]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;code&amp;amp;gt;&#039;&#039;&#039; ist die Einstellung die innerhalb des Sensors (DIP Switche unter dem Batteriedeckel) durchgeführt werden muss, um die einzelnen Sensoren zu unterscheiden. Es können bis zu 8 Sensoren genutzt werden. Default ist Adresse 5 (Beide DIP-Switches in mittlerer Postition)&lt;br /&gt;
* &#039;&#039;&#039;[corr1,corr2]&#039;&#039;&#039; Hier können Korekturfaktoren eingeben werden, um die Sensoren zu kalibrieren.&lt;br /&gt;
** corr1: Korektur des Temperatur Sensors&lt;br /&gt;
** corr2: Korektur des Feuchte Sensors&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
== Log-Auszug ==&lt;br /&gt;
S300TH senden ihre Werte in sehr unregelmäßigen Abständen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-10-15_17:30:01 ez_Aussensensor T: 9  H: 70.3&lt;br /&gt;
2012-10-15_17:47:44 ez_Aussensensor T: 8.9 H: 70.2&lt;br /&gt;
2012-10-15_17:50:41 ez_Aussensensor T: 9  H: 70.3&lt;br /&gt;
2012-10-15_17:56:35 ez_Aussensensor T: 8.9 H: 70.2&lt;br /&gt;
2012-10-15_18:08:23 ez_Aussensensor T: 8.8 H: 70.2&lt;br /&gt;
2012-10-15_18:40:50 ez_Aussensensor T: 8.6 H: 70.6&lt;br /&gt;
2012-10-15_18:43:47 ez_Aussensensor T: 8.6 H: 70.6&lt;br /&gt;
2012-10-15_18:49:41 ez_Aussensensor T: 8.5 H: 70.5&lt;br /&gt;
2012-10-15_18:52:38 ez_Aussensensor T: 8.6 H: 70.6&lt;br /&gt;
2012-10-15_18:55:35 ez_Aussensensor T: 8.5 H: 70.5&lt;br /&gt;
2012-10-15_19:01:29 ez_Aussensensor T: 8.5 H: 70.5&lt;br /&gt;
2012-10-15_19:13:17 ez_Aussensensor T: 8.4 H: 70.9&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Bei einzelnen Produktionsreihen ist es anscheinend nicht möglich, mit den DIP Switches eine andere Adresse als 5 (Voreinstellung) einzustellen. D.H. egal welche Stellung die DIP-Switche haben, der Sensor sendet immer auf Adresse 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
Das Geräte ist baugleich mit dem Conrad [[S555TH]] Sensor, der allerdings inzwischen nicht mehr verkauft wird.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung bei ELV &amp;lt;nowiki&amp;gt;[http://www.elv-downloads.de/service/manuals_hw/75702_S300TH_UM_G_eQ_3.pdf PDF]&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=1208</id>
		<title>RSL 2-Draht Einbauschalter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=1208"/>
		<updated>2013-05-10T20:52:19Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Conrad Funk-Einbauschalter 2 Draht RSL (Intertechno kompatibel), zum Einbau in Montagedosen auch ohne Nulleiter und unter Verwendung des normalen Schalters. ==…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conrad Funk-Einbauschalter 2 Draht RSL (Intertechno kompatibel), zum Einbau in Montagedosen auch ohne Nulleiter und unter Verwendung des normalen Schalters.&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Der Conrad Funk-Einbauschalter 2 Draht hat als wesentlichen Vorteil, dass er nur mit Phase betrieben werden kann. In vielen Installationen befindet sich in der Unterputzwanddose für den Lichtschalter kein Nullleiter, sodass die üblichen FS20 oder HM Unterputzschalter nicht verwendet werden können. In der klassischen Elektroinstallation wird in der Wandose nur die Phase geschaltet und der Rückleiter auf anderem Wege zur Lichtfassung geführt. Der Conrad Funk-Einbauschalter 2 Draht benötigt tatsächlich nur die ankommende und abgehende (geschaltete) Phase. Er bezieht seine Stromversorgung vermutlich aus den Potentialunterschieden der beiden Phasenstränge auch im ausgeschaltetem Zustand, hierbei wird wahrscheinlich das Neutralleiterpotential durch den zu schaltenden Verbraucher genutzt. Vermutlich aus diesem Grunde kann der Schalter nicht verwendet werden, wenn der zu schaltende Verbraucher eine Leuchtstoffröhre ist.&lt;br /&gt;
&lt;br /&gt;
Überdies benötigt der Conrad Funk-Einbauschalter 2 Draht keinen Taster zur Vor-Ort-Betätigung, sondern die 2 herausgeführten Schaltdrähte können mittels des vorher verbauten Schalters aus einem normalen Schalterprogramm betrieben werden. Der Schalter wird hierbei wie ein Toggle verwendet. D.H. egal welche Stellung der Schalter hat, der Conrad Funk-Einbauschalter 2 Draht kann vollständig per Funk geschaltet werden, der lokale mechanische Schalter ändert bei jeder Betätigung den Schaltzustand.&lt;br /&gt;
&lt;br /&gt;
Vorteile des Conrad Funk-Einbauschalter 2 Draht gegenüber FS20 und HM Unterputzshaltern wie [[FS20 SU Unterputz-Funk-Schalter]]&lt;br /&gt;
&lt;br /&gt;
* benötigt nur Phase zur Stromversorgung&lt;br /&gt;
* dünner als FS20 Unterputzschalter, daher leichter auch hinter dem normalen Lichtschalter einbaubar.&lt;br /&gt;
* benötigt keinen Taster, sondern kann mit (vorhandenem) Schalter betrieben werden.&lt;br /&gt;
* RSL Funk, also kompatibel mit Intertechno 433 Mhz.&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Conrad Funk-Einbauschalter 2 Draht hat keine Kodierschalter, sondern muss angelernt werden. Da dazu der gewünschte Intertechnokanal 3 Sekunden lang senden muss, ist ein Anlernen mit FHEM nicht möglich, da FHEM ununterbrochenes senden nicht beherrscht. Der Schalter kann aber leicht mit einer gängigen Intertechno Fernbedienung wie z.b. einer YCT-100 angelernt werden. Einmal angelernt, ist eine Schaltung per FHEM kein Problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Die Schaltleistung des Conrad Funk-Einbauschalter ist mit 300 Watt ohmsche Last und 100 Watt induktiv deutlich geringer als die anderer Produkte, für Licht aber völlig ausreichend.&lt;br /&gt;
Nicht geeignet wenn im zu schaltetenden Stromkreis nur Leuchtstoffröhren zu schalten sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_FS20SM8&amp;diff=1207</id>
		<title>Rolladensteuerung mit FS20SM8</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_FS20SM8&amp;diff=1207"/>
		<updated>2013-05-10T20:52:17Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „== Aufgabe: == Steuerung von Rolladen, die über zwei externe Taster bedient werden können.  Die hier beschriebene Lösung wurde für einen Lott/Uniroll-Gurtw…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: ==&lt;br /&gt;
Steuerung von Rolladen, die über zwei externe Taster bedient werden können.&lt;br /&gt;
&lt;br /&gt;
Die hier beschriebene Lösung wurde für einen Lott/Uniroll-Gurtwickler entwickelt. Dieser kann über zwei Taster, die am Pfostenstecker des Sonnensensors angeschlossen werden, mit einem Tastendruck von 500 bis 1000ms Dauer geschaltet werden. Ein zweiter Tastendruck stoppt den Vorgang.&lt;br /&gt;
Da die Anschlussbelegung nicht direkt auf der Lott/Uniroll-Webseite zur Verfügung steht, bitte ich darum, diese von der dortigen Hotline zu erfragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen: ==&lt;br /&gt;
Für dieses Projekt ist zunächst etwas Bastelarbeit erforderlich. Benötigt werden ein FS20SM8, je 2 Relais und 2 Freilaufdioden pro Rolladen, ein Gehäuse und ein Netzteil. Ggf. kommen Steckverbinder nach Belieben für den Anschluss des Kabels zum Gurtwickler hinzu.&lt;br /&gt;
Der FS20SM8 kann mit 3V oder zwischen 5V und 12V betrieben werden. Ich habe ein altes 5V-Gleichspannungsnetzteil und je 2 5V-Subminiaturralais verbaut.&lt;br /&gt;
Die Schaltung kann schnell auf einer Loch- oder Streifenrasterplatine aufgebaut werden. Wie die Relais und Freilaufdioden angeschlossen werden, ist in der Bedienungsanleitung des FS20SM8 beschrieben.&lt;br /&gt;
Die Relais erzeugen bei der unten beschreibenen Ansteuerung den benötigten Tastendruck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Umsetzung: ==&lt;br /&gt;
Die Steuerung wird hier beispielhaft für ein Rollo beschrieben.&lt;br /&gt;
Es werden 2 Ausgänge des FS20SM8 als Devices (1x für &amp;quot;Ab&amp;quot; und 1x für &amp;quot;Auf&amp;quot;) in fhem angelegt. Der benötigte Schaltimpuls wird mit &amp;quot;set rollo.xxx on-for-timer 0.5&amp;quot; erzeugt. Mit eventMap wird der Befehl nach &amp;quot;Ab&amp;quot; bzw. &amp;quot;Auf&amp;quot; umbenannt. Im Webinterface wird jeweils nur ein Schaltzustand mit webCmd &amp;quot;Ab&amp;quot; bzw. &amp;quot;Auf&amp;quot; angezeigt.&lt;br /&gt;
Damit beide Schaltzustände in einer Zeile angezeigt werden, ist ein FS20-Dummy-Device erforderlich. Hier können zusätzlich eine oder mehrere Zwischenstufen (z.B. &amp;quot;Ab80&amp;quot;) definiert werden.&lt;br /&gt;
Zur Steuerung des Dummy-Devices wird ein Notify eingerichtet, welches auf die Eingaben reagiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== fhem.cfg: ==&lt;br /&gt;
Schalte Relais am Ausgang 5 des FS20SM8 zum Rollo-Schließen für 0,5 Sekunden ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define sm8.5 FS20 &amp;amp;lt;housecode&amp;amp;gt; &amp;amp;lt;button&amp;amp;gt;&lt;br /&gt;
attr sm8.5 comment Rollo xxx Ab&lt;br /&gt;
attr sm8.5 eventMap /on-for-timer 0.5:Ab/&lt;br /&gt;
attr sm8.5 model fs20sm8&lt;br /&gt;
attr sm8.5 room hidden&lt;br /&gt;
attr sm8.5 webCmd Ab&lt;br /&gt;
define FileLog_sm8.5 FileLog ./log/sm8.5-%Y.log sm8.5&lt;br /&gt;
attr FileLog_sm8.5 logtype text&lt;br /&gt;
attr FileLog_sm8.5 room hidden&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Schalte Relais am Ausgang 6 des FS20SM8 zum Rollo-Öffnen für 0,5 Sekunden ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define sm8.6 FS20 &amp;amp;lt;housecode&amp;amp;gt; &amp;amp;lt;button&amp;amp;gt;&lt;br /&gt;
attr sm8.6 comment Rollo xxx Auf&lt;br /&gt;
attr sm8.6 eventMap /on-for-timer 0.5:Auf/&lt;br /&gt;
attr sm8.6 model fs20sm8&lt;br /&gt;
attr sm8.6 room hidden&lt;br /&gt;
attr sm8.6 webCmd Auf&lt;br /&gt;
define FileLog_sm8.6 FileLog ./log/sm8.6-%Y.log sm8.6&lt;br /&gt;
attr FileLog_sm8.6 logtype text&lt;br /&gt;
attr FileLog_sm8.6 room hidden&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FS20-Dummy-Device für das Webinterface:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define rollo.xxx FS20 &amp;amp;lt;housecode&amp;amp;gt; &amp;amp;lt;button&amp;amp;gt;&lt;br /&gt;
attr rollo.xxx comment Rollo xxx&lt;br /&gt;
attr rollo.xxx dummy 1&lt;br /&gt;
attr rollo.xxx eventMap /on-for-timer 15:Ab80/off:Ab/on:Auf/&lt;br /&gt;
attr rollo.xxx model dummySimple&lt;br /&gt;
attr rollo.xxx room FS20&lt;br /&gt;
attr rollo.xxx webCmd Auf:Ab80:Ab&lt;br /&gt;
define FileLog_rollo.xxx FileLog ./log/rollo.xxx-%Y.log rollo.xxx&lt;br /&gt;
attr FileLog_rollo.xxx logtype text&lt;br /&gt;
attr FileLog_rollo.xxx room FS20&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notify zur Reaktion auf die Eingabe im Webinterface:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define rollo.xxx.ntfy notify rollo.xxx:.* {\&lt;br /&gt;
 if(&#039;%&#039; eq &#039;Ab&#039;) {\&lt;br /&gt;
  fhem &#039;set sm8.5 Ab&#039;;;\&lt;br /&gt;
  fhem &#039;setstate rollo.xxx Ab&#039;;;\&lt;br /&gt;
 } elsif(&#039;%&#039; eq &#039;Auf&#039;) {\&lt;br /&gt;
  fhem &#039;set sm8.6 Auf&#039;;;\&lt;br /&gt;
  fhem &#039;setstate rollo.xxx Auf&#039;;;\&lt;br /&gt;
 } else {\&lt;br /&gt;
  if(OldValue(&#039;rollo.xxx&#039;) eq &#039;Auf&#039;) {\&lt;br /&gt;
   fhem &#039;set sm8.5 Ab&#039;;;\&lt;br /&gt;
   fhem &#039;define rk80 at +00:00:15 set sm8.5 Ab&#039;;;\&lt;br /&gt;
   fhem &#039;setstate rollo.xxx Ab80&#039;;;\&lt;br /&gt;
  }\&lt;br /&gt;
 } \&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Steuerung mit Sonnenauf-/untergang:&lt;br /&gt;
&lt;br /&gt;
Öffnet Rollo bei Sonnenaufgang aber nicht vor 7:00 Uhr&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Rollo.hoch at *{sunrise(0,&#039;07:00&#039;,)} set rollo.xxx Auf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Schließt Rollo 15 Minuten vor Sonnenuntergang:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Rollo.runter at *{sunset(-900)} set rollo.xxx Ab&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erläuterungen ==&lt;br /&gt;
Die &amp;quot;else&amp;quot;-Anweisung im Notify ist für eine Beschattungssteuerung gedacht. Dazu werden 2 Tastendrücke im Abstand von 15 Sekunden ausgeführt, um das Rollo ca 80% herunterzufahren. Weitere Zwischenstellungen könnten mit elseif eingefügt werden. Der Wert von 15 Sekunden in der Anweisung &amp;quot;fhem &#039;define rk80 at +00:00:15 set sm8.5 Ab&#039;;;&amp;quot; muss ggf. an die eigenen Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Im Artikel [http://fhemwiki.de/wiki/Rolladensteuerung_mit_fs20rsu_und_fs20bs http://fhemwiki.de/wiki/Rolladensteuerung_mit_fs20rsu_und_fs20bs] ist eine Beschattungssteuerung beschrieben. Wer beide Arten von Rollos gleichzeitig schalten möchte, braucht nur &amp;quot;rollo.xxx&amp;quot; in die Zeile &amp;quot;fhem &#039;set rollo.wz Ab80&#039;;;&amp;quot; einzufügen.&lt;br /&gt;
&lt;br /&gt;
Icons für das Webinterface können ebenso von diesem Projekt genommen werden.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_fs20rsu_und_fs20bs&amp;diff=1206</id>
		<title>Rolladensteuerung mit fs20rsu und fs20bs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_fs20rsu_und_fs20bs&amp;diff=1206"/>
		<updated>2013-05-10T20:52:16Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Die &amp;#039;&amp;#039;&amp;#039;Beschattungssteuerung&amp;#039;&amp;#039;&amp;#039;FS20bs dient dazu, Rolläden bei Sonne herunter- und bei Schatten heraufzufahren. Wenn sie mit einem FS20-Rolladenschalter (z.B.…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Beschattungssteuerung&#039;&#039;&#039;FS20bs dient dazu, Rolläden bei Sonne herunter- und bei Schatten heraufzufahren. Wenn sie mit einem FS20-Rolladenschalter (z.B. [[FS20RSU&amp;quot; class=&amp;quot;mw-redirect]]) gepairt ist, ist eine manuelle Steuerung nur begrenzt möglich.&lt;br /&gt;
&lt;br /&gt;
Meine Lösung sieht so aus:&lt;br /&gt;
&lt;br /&gt;
FS20bs und FS20rsu sind als Devices im FHEM angelegt, aber nicht miteinander gepairt. Die FS20bs wird im Mode 2 betrieben. Sie liefert dann beim Wechsel von dunkel nach hell ein &amp;quot;off 2.5&amp;quot; und beim Wechsel von hell nach dunkel ein &amp;quot;on 2&amp;quot;. Diese Werte werden mit einem CUL empfangen und mit &amp;quot;eventMap /off 2.5:hell/on 2:dunkel/&amp;quot; wegen der enthaltenen Leerzeichen in &amp;quot;hell&amp;quot; bzw. &amp;quot;dunkel&amp;quot; umgewandelt. Dazu habe ich mir 2 Icons gebastelt, die statt der Glühlampen im Webinterface angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Per notify wird der Rolladen mit FS20rsu bei Sonne mit &amp;quot;set rollo.wz off-for-timer 12&amp;quot; so weit heruntergefahren, dass der Sensor noch von der Sonne beschienen wird. Mit &amp;quot;attr fs20bs webCmd xxx&amp;quot; wird nur der aktuelle Status im Webinterface angezeigt. Für das Rollo habe ich Icons für die Zustände &amp;quot;Auf&amp;quot;, &amp;quot;Ab80&amp;quot; und &amp;quot;Ab&amp;quot; erstellt.&lt;br /&gt;
&lt;br /&gt;
Morgens und abends wird der Rolladen mit sunrise bzw. sunset gesteuert.&lt;br /&gt;
&lt;br /&gt;
Die Beschattungssteuerung wird nur ausgeführt, wenn der Rolladen in der &amp;quot;Auf&amp;quot;-Stellung ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist der zugehörige Ausschnitt aus meiner fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
Definition des FS20rsu:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define rollo.wz FS20 &amp;amp;lt;housecode&amp;amp;gt; &amp;amp;lt;button&amp;amp;gt;&lt;br /&gt;
attr rollo.wz eventMap /off-for-timer 12:Ab80/off:Ab/on:Auf/&lt;br /&gt;
attr rollo.wz model fs20rsu&lt;br /&gt;
attr rollo.wz room Wohnzimmer&lt;br /&gt;
attr rollo.wz webCmd Auf:Ab80:Ab&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Definition des FS20bs:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define fs20bs FS20 &amp;amp;lt;housecode&amp;amp;gt; &amp;amp;lt;button&amp;amp;gt;&lt;br /&gt;
attr fs20bs comment Beschattungssteuerung on=dunkel off=hell&lt;br /&gt;
attr fs20bs dummy 1&lt;br /&gt;
attr fs20bs eventMap /off 2.5:hell/on 2:dunkel/&lt;br /&gt;
attr fs20bs model fs20bs&lt;br /&gt;
attr fs20bs room Wohnzimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Zeitsteuerung mit sunset und sunrise:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Rollo.wz.runter at +*{sunset_rel()} set rollo.wz off&lt;br /&gt;
define Rollo.wz.hoch at +*{sunrise_rel(0,&amp;quot;07:00&amp;quot;,)} set rollo.wz on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beschattungssteuerung:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define rollo.wz.sonne notify fs20bs:* {\&lt;br /&gt;
 if(&#039;%&#039;&amp;amp;#160;!~ m/dunkel/) {\&lt;br /&gt;
  if(Value(&#039;rollo.wz&#039;) eq &#039;Auf&#039;) {\&lt;br /&gt;
   fhem &#039;set rollo.wz Ab80&#039;;;\&lt;br /&gt;
  }\&lt;br /&gt;
 } else { \&lt;br /&gt;
  fhem &#039;set rollo.wz Auf&#039;;;\&lt;br /&gt;
 } \&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier sind die Icons:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dunkel:&lt;br /&gt;
[[File:/w/images/0/02/Fs20bs_dunkel.png|32px|link=/wiki/Datei:Fs20bs_dunkel.png|alt=Fs20bs dunkel.png]]hell:&lt;br /&gt;
[[File:/w/images/4/48/Fs20bs_hell.png|32px|link=/wiki/Datei:Fs20bs_hell.png|alt=Fs20bs hell.png]]Ab:&lt;br /&gt;
[[File:/w/images/d/da/Fs20bs_Ab.png|32px|link=/wiki/Datei:Fs20bs_Ab.png|alt=Fs20bs Ab.png]]Ab80:&lt;br /&gt;
[[File:/w/images/b/bd/Fs20bs_Ab80.png|32px|link=/wiki/Datei:Fs20bs_Ab80.png|alt=Fs20bs Ab80.png]]Auf:&lt;br /&gt;
[[File:/w/images/0/0a/Fs20bs_Auf.png|32px|link=/wiki/Datei:Fs20bs_Auf.png|alt=Fs20bs Auf.png]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Zum Hochladen ins Wiki habe ich den Dateinamen &amp;quot;fs20bs_&amp;quot; vorangestellt, weil eine Datei bereits unter dem von mir verwendeten Namen existierte. Dieser Teil muss entfernt werden. Bitte Groß/Kleinschreibung beachten. Die Dateien gehören ins Verzeichnis /fhem/FHEM bzw. /fhem/www/pgm2 bei der neuen Verzeichnisstruktur.&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass auch andere etwas damit anfangen können, da die Steuerung nicht auf FS20-Aktoren beschränkt ist. Der Wert für &amp;quot;off-for-timer&amp;quot; muss natürlich auf die jeweilige Konfiguration angepasst werden. Verbesserungsvorschläge sind jederzeit willkommen.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_KNX_ABB_Aktor_JRA_S_4.230.5.1&amp;diff=1205</id>
		<title>Rolladensteuerung KNX ABB Aktor JRA S 4.230.5.1</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_KNX_ABB_Aktor_JRA_S_4.230.5.1&amp;diff=1205"/>
		<updated>2013-05-10T20:52:15Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „= Rolladensteuerung mit KNX ABB Aktor JRA S 4.230.5.1 = Hallo, ich versuch mal meine Erfahrung mit KNX (EIB) und der Rollosteuerung niederzuschreiben. Die Steu…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Rolladensteuerung mit KNX ABB Aktor JRA S 4.230.5.1 =&lt;br /&gt;
Hallo, ich versuch mal meine Erfahrung mit KNX (EIB) und der Rollosteuerung niederzuschreiben.&lt;br /&gt;
Die Steuerung funktioniert, die Position des Rollos wird in Prozent zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird ein Aktor für KNX von ABB JRA S 4.230.5.1.&lt;br /&gt;
Dieser Aktor hat eine Fahrzeitermittlung und eine prozentuale Positionierung sowie 4 Preset Speicherplätze.&lt;br /&gt;
Der Aktor kann auch Jalousien ansteuern.&lt;br /&gt;
&lt;br /&gt;
== Vorgehen ==&lt;br /&gt;
=== KNX Konfig ===&lt;br /&gt;
Ich habe fünf Gruppenadressen je Rollo angelegt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0/0/10 = Auf/Ab&lt;br /&gt;
0/0/11 = Stop&lt;br /&gt;
0/0/12 = Preset 1 und 2 (Low und High Bit)&lt;br /&gt;
0/0/13 = Preset 3 und 4&lt;br /&gt;
0/0/17 = Status Höhe 0...255&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== fhem ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Rollo1 EIB 0/0/17 0/0/10 0/0/11 0/0/12 0/0/13&lt;br /&gt;
attr Rollo1 alias Rollo 1 Arbeitszimmer&lt;br /&gt;
attr Rollo1 model percent&lt;br /&gt;
attr Rollo1 eventMap /on g3:Stop/off g2:Auf/on g2:Ab/off g4:Pos1/on g4:Pos2/off g5:Pos3/on g5:Pos4&lt;br /&gt;
attr Rollo1 webCmd Ab:Stop:Auf:::Pos1:Pos2:Pos3:Pos4&lt;br /&gt;
attr Rollo1 room Rollos&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[File:/w/images/0/04/Rollo1.png|644px|link=/wiki/Datei:Rollo1.png|alt=Rollo1.png]]== Funktionsweise ==&lt;br /&gt;
Ich habe lange gebraucht bis ich die eventMap kapiert habe. &lt;br /&gt;
&lt;br /&gt;
* gX (g1 ... g4) beziehen sich auf die EIB Adresse in der define Zeile (sollte mit anderen Systemen genauso funktionieren). Auf g1 kann verzichtet werden.&lt;br /&gt;
* Jeder Eintrag beginnt mit einem &amp;quot;/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/on g3:Stop ==&amp;amp;gt; An die EIB Adresse 3 (0.0.11) ein High Bit senden und das ganze als Stop bezeichnen (Ansicht)&lt;br /&gt;
&lt;br /&gt;
Die webCmd sorgt für die Web-Darstellung im fhem.&lt;br /&gt;
Wie man gut sehen kann, beziehen sich die Schlüsselworte auf die eventMap.&lt;br /&gt;
&lt;br /&gt;
Dadurch, dass die Rückgabeadresse (0/0/17) an erster Stelle steht, wird anstatt der Lampe ein Prozentwert ausgegeben.&lt;br /&gt;
&lt;br /&gt;
= Anpassen des Moduls 10_EIB.pm um das Model percent255 =&lt;br /&gt;
(Danke an Ines)&lt;br /&gt;
&lt;br /&gt;
Es gibt Aktoren die geben die Position von 0 bis 255 zurück. Damit das im fhem richtig angezeigt wird, muss das Modul 10_EIB.pm erweitert werden.&lt;br /&gt;
Es wird das Model percent255 hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Das Model percent muss durch percent255 ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr Rollo1 model percent255&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Anbei ein Diff-File:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
das diff wird mit dem Tool Patch eingespielt.&lt;br /&gt;
&lt;br /&gt;
cat 10_EIB_Percent255.diff |patch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;--- /usr/src/fhem/FHEM/10_EIB.pm    2012-05-10 11:22:45.932001898 +0200&lt;br /&gt;
+++ /usr/share/fhem/FHEM/10_EIB.pm   2012-06-06 09:59:55.796006787 +0200&lt;br /&gt;
@@ -31,7 +31,8 @@&lt;br /&gt;
 &lt;br /&gt;
  # 1-Octet unsigned value (handled as dpt7)&lt;br /&gt;
  &amp;quot;dpt5&amp;quot;        =&amp;amp;gt; {&amp;quot;CODE&amp;quot;=&amp;amp;gt;&amp;quot;dpt7&amp;quot;, &amp;quot;UNIT&amp;quot;=&amp;amp;gt;&amp;quot;&amp;quot;},&lt;br /&gt;
- &amp;quot;percent&amp;quot;  =&amp;amp;gt; {&amp;quot;CODE&amp;quot;=&amp;amp;gt;&amp;quot;dpt7&amp;quot;, &amp;quot;UNIT&amp;quot;=&amp;amp;gt;&amp;quot;%&amp;quot;},    &lt;br /&gt;
+ &amp;quot;percent&amp;quot;  =&amp;amp;gt; {&amp;quot;CODE&amp;quot;=&amp;amp;gt;&amp;quot;dpt7&amp;quot;, &amp;quot;UNIT&amp;quot;=&amp;amp;gt;&amp;quot;%&amp;quot;},&lt;br /&gt;
+ &amp;quot;percent255&amp;quot; =&amp;amp;gt; {&amp;quot;ADJUSTMENT&amp;quot;=&amp;amp;gt;&amp;quot;255&amp;quot;, &amp;quot;CODE&amp;quot;=&amp;amp;gt;&amp;quot;dpt7&amp;quot;, &amp;quot;UNIT&amp;quot;=&amp;amp;gt;&amp;quot;%&amp;quot;},     &lt;br /&gt;
 &lt;br /&gt;
  # 2-Octet unsigned Value (current, length, brightness)&lt;br /&gt;
  &amp;quot;dpt7&amp;quot;        =&amp;amp;gt; {&amp;quot;CODE&amp;quot;=&amp;amp;gt;&amp;quot;dpt7&amp;quot;, &amp;quot;UNIT&amp;quot;=&amp;amp;gt;&amp;quot;&amp;quot;},&lt;br /&gt;
@@ -346,14 +347,16 @@&lt;br /&gt;
    my $code = $eib_dpttypes{&amp;quot;$model&amp;quot;}{&amp;quot;CODE&amp;quot;};&lt;br /&gt;
    my $unit = $eib_dpttypes{&amp;quot;$model&amp;quot;}{&amp;quot;UNIT&amp;quot;};&lt;br /&gt;
    my $transval = undef;&lt;br /&gt;
+    my $adjustment = $eib_dpttypes{&amp;quot;$model&amp;quot;}{&amp;quot;ADJUSTMENT&amp;quot;}; &lt;br /&gt;
    &lt;br /&gt;
    Log(4,&amp;quot;EIB parse $value for $name model: $model dpt: $code unit: $unit&amp;quot;);&lt;br /&gt;
    if ($code eq &amp;quot;dpt7&amp;quot;) &lt;br /&gt;
    {&lt;br /&gt;
        my $fullval = hex($value);&lt;br /&gt;
-        $transval = $fullval;      &lt;br /&gt;
-                &lt;br /&gt;
+        $transval = $fullval;&lt;br /&gt;
+        $transval = ($fullval / 2.55) if($adjustment eq &amp;quot;255&amp;quot;);&lt;br /&gt;
+        $transval = sprintf(&amp;quot;%.0f&amp;quot;,$transval);&lt;br /&gt;
+&lt;br /&gt;
        Log(5,&amp;quot;EIB $code parse $value = $fullval translated: $transval&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
    } elsif($code eq &amp;quot;dpt9&amp;quot;)&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RFR_CUL_und_FHT80&amp;diff=1204</id>
		<title>RFR CUL und FHT80</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RFR_CUL_und_FHT80&amp;diff=1204"/>
		<updated>2013-05-10T20:51:36Z</updated>

		<summary type="html">&lt;p&gt;Generix: Die Seite wurde neu angelegt: „Der Einsatz eines FHT80b Devices kann jedoch zu Problemen führen, da hier das Timing entscheidend ist.  == Herausforderungen der FHT Kommunikation an RFR …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Einsatz eines [[FHT80b]] Devices kann jedoch zu Problemen führen, da hier das Timing entscheidend ist.&lt;br /&gt;
&lt;br /&gt;
== Herausforderungen der FHT Kommunikation an RFR CULs ==&lt;br /&gt;
Die CUL/FHZ &amp;amp;lt;-&amp;amp;gt; FHT [[Maximal nutzbare Geräte]] ist sehr fragil, und braucht für die Übermittlung von N Werten etwa 5+N ungestörte Nachrichtenübermittlungen - abwechselnd von beiden Teilnehmer - mit der langsamen 1kHz Technik. Falls während dieser langen &amp;quot;Diskussion&amp;quot; eine Nachricht nicht klar empfangen wird, dann wird der gesamte Austausch in ca. 2 Minuten wiederholt.&lt;br /&gt;
Dies schränkt bereits im Normalbetrieb die Anzahl der [[Maximal nutzbare Geräte]] (insbesondere FHT80) deutlich ein.&lt;br /&gt;
&lt;br /&gt;
Nur falls ein Austausch komplett abgearbeitet ist, kommt der nächste Austausch aus dem CUL Puffer (T02) dran.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite ist die [[RFR CUL]] Übertragung, die erst auf eine Sendepause wartet, bevor auf 250kHz umgeschaltet wird und die Daten zwischen den CULs übertragen werden. Dem RFR Code ist aber nicht bekannt, dass eine FHT-Übertragung unterwegs ist. Er kann daher in kleinen Sendepausen während einer FHT Kommunikation umschalten, um in den Pausen die Kommunikation vom RFR zum CUL abzuwickeln. Dadurch kann es zu Verzögerungen bei der Kommunikation mit dem FHT80 kommen, die zum Abbruch führen. Die Kommunikation wird dann ca. 2 Minuten später wiederholt. &lt;br /&gt;
Solange keine Sendepause vorliegt, werden alle empfangenen Daten in einem 64 Byte grossen lokalen Puffer geschrieben.&lt;br /&gt;
&lt;br /&gt;
== Lösung ab CULfw 1.45 ==&lt;br /&gt;
Seit Firmware Version 1.45 (2012-07-11) versucht das RFR jedoch eine laufende FHT Kommunikation zu erkennen und solange einen RFR Kommunikation zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
Im Detail:&lt;br /&gt;
RFR sendet erst, wenn &amp;quot;rf_isreceiving&amp;quot; 2-mal im Abstand von 24ms Stille meldet.&lt;br /&gt;
&lt;br /&gt;
Seit Version 1.45 wurde die Prüfung erweitert.&lt;br /&gt;
&amp;quot;rf_isreceiving&amp;quot; prüft nun zusätzlich, ob das FHT Modul auf Daten wartet:&lt;br /&gt;
(fht80b_timeout&amp;amp;#160;!= FHT_TIMER_DISABLED) &lt;br /&gt;
fht80b_timeout wird beim Empfang eines FHT Telegramms mit 41 (== 328ms) &lt;br /&gt;
initialisiert, auch wenn FHT in CUL deaktiviert ist. &lt;br /&gt;
&lt;br /&gt;
Dadurch sollte erkannt werden, ob eine laufende FHT Communikation stattfindet, die nicht unterbrochen werden sollte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lösungsansätze vor CULfw 1.45 ==&lt;br /&gt;
Es ist Erfahrungsgemäss durchaus möglich (auch mit Firmware vor 1.45), FHTs an einem RFR CUL zu betreiben, es wird jedoch häufiger zu Problemen mit Verbindungsabbrüchen kommen. Problematisch sind insbesondere längere Kommunikationen mit FHTs wie z.b. die Übertragung von Wochenprogrammen.&lt;br /&gt;
&lt;br /&gt;
Besonders problematisch sind die diversen Methoden, die FHTs regelmässig zum Senden der Temperaturdaten zu bewegen. Bekanntermassen stellen die FHTs nach 5-10 Tagen das Übermitteln von Daten ein. Zum &amp;quot;Aufrischen&amp;quot; der Kommunikation werden verschiedene Tips gehandelt:&lt;br /&gt;
&lt;br /&gt;
* 1. Methode: Täglich ein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define fht_report at +*06:00:00 set &amp;amp;lt;name&amp;amp;gt; report1 255 report2 255&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
abzusetzen. (Alternativ &amp;quot;refreshvalues&amp;quot;, was die selbe Bedeutung hat). Dies erzeugt jedoch eine nicht unerhebliche Funklast und lange Kommunikationen, ca. 8 Nutznachrichtenübermittlungen (plus 5 Nachrichtenübermittlung bei der Kommunikationsanbahnung) zwischen FHT80 und dem CUL sind notwendig. Bei der Kommunikation mit einem RFR CUL ist die Wahrscheinlichkeit einer Störung hoch.&lt;br /&gt;
&lt;br /&gt;
* 2. Methode: Jede Nacht mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set ... time&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die [[FHT: Datum und Zeit von fhem setzen lassen]] Dies kann bei vielen FHTs die als IOdev eine RFR CUL haben problematisch sein.&lt;br /&gt;
&lt;br /&gt;
Eine Reduzierung der Funklast kann erreicht werden, in dem mittels report1/2 nur der tatsächliche Bitwert der benötigten Informationen angefordert werden, insbesondere das Wochenprogramm (report1 = 255) ändert sich idR. selten und wird meist nicht regelmässig benötigt. &lt;br /&gt;
Ausserdem kann es sinnvoll sein, die Werte nur alle 5 oder 7 Tage anzufordern (bzw die Uhr nur alle 5-7 Tage zu stellen), und für verschiedene FHTs zeitlich versetzt, um die Wahrscheinlickeit sich kreuzender Kommunikation zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
* 3. Methode: Einrichtung eines Watchdog (&amp;quot;Wachundes&amp;quot;) mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define wd_FHT1 watchdog FHT1:measured-temp.* 01:00 SAME set FHT1 time&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Watchdog überprüft, ob die alle 15 Minute gesendeten Temperaturmeldungen eintreffen. Falls nicht setzt er die Uhrzeit des FHT um ihn so wieder zur Kommunikation anzuregen.&lt;/div&gt;</summary>
		<author><name>Generix</name></author>
	</entry>
</feed>