Dies ist eine alte Version des Dokuments!
Benötigt dev-perl/JSON (Gentoo) bzw. libjson-perl (Debian)
define EG.Wo.Kodi XBMC 192.168.0.6 tcp xbmc xbmc define wz_XBMC XBMC <IP-Adresse> tcp <USERNAME> <PASSWORT> attr wz_XBMC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
Mit tcp reagiert fhem für ca. 3 Sekunden nicht, wenn XBMC ausgeschaltet ist:
attr EG.Wo.Kodi fork enable
ToDo: http://forum.fhem.de/index.php/topic,26893.msg213151.html#msg213151
http://www.fhemwiki.de/wiki/Modul_Alarmanlage
Das Modul 95_Alarm.pm stellt eine komfortable Oberfläche bereit, um per Webinterface bestimmte auslösende Elemente mit bestimmten Aktionen zu verknüpfen.
Damit FHEM-Devices als Aktoren oder Sensoren für die Alarmanlage genutzt werden können, müssen zwei neue globale Attribute namens alarmDevice und alarmSettings eingeführt werden. Dazu muss in der Grundkonfiguration von FHEM die Definition der nutzerspezifischen Attribute via userattr angepasst werden. Bei Konfiguration über FHEMWEB ist es ratsam dazu die folgenden beiden Befehle zu nutzen:
{ addToAttrList("alarmDevice:Actor,Sensor") } { addToAttrList("alarmSettings") }
Zur Erläuterung:
Sensoren und Actoren können auch dummy-devices sein, um Zustände zu bearbeiten:
define <Name> dummy
Ferner muss das Modul 95_Alarm.pm im Modulpfad installiert werden, ebenso die JavaScript-Datei alarm.js in www/pgm2.
define <NameDerAlarmanlage> Alarm
Es wird ein versteckter Raum „AlarmRoom“ angelegt, welcher über einen Weblink im oberen Menü des Webinterfaces erreichbar ist.
Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen Alarm trägt. Dieser wird automatisch erstellt, sobald die Alarme wie unten konfiguriert werden.
8 Alarmlevel sind für das Modul normalerweise möglich (kann durch Setzen eines einzelnen Parameters im Modulcode verändert werden). In der Tabelle 'Settings' können für jeden Level die Startzeit ts und Endzeit te des Alarmlevels gesetzt werden. Formate für die Zeitangabe können sein:
Diese Aktivierungszeiten wirken sich wie folgt auf den Alarmlevel aus:
Ferner kann für jeden Alarmlevel gesetzt oder bedient werden
Für jeden Sensor kann gesetzt werden:
Achtung: Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.
Die insgesamt in den STATE der Alarmanlage geschriebene Nachricht besteht dann aus
(Anzeige der Zustände) (Nachricht Teil 1)' '(Nachricht Teil 2).
Bitte weiter unten nachlesen, was mit der Anzeige der Zustände gemeint ist. In diesen Nachrichten werden die folgenden Ersetzungen vorgenommen
Für jeden Aktor kann gesetzt werden:
Durch Anklicken des Buttons „Set Alarms“ werden die alarmSettings-Attribute befüllt. Folgendes ist zu Beachten:
Sperrung: Das Attribut lockstate muss den Wert „unlocked“ haben, damit durch Anklicken des Buttons Set Alarms die alarmSettings-Attribute befüllt werden können. Das ist in der Regel beim ersten Laden des Moduls nicht der Fall, hierzu muss also das Attribut von Hand auf den richtigen Wert gesetzt werden!
attr <AlarmName> lockstate unlocked 'hat bei mir nicht funktioniert set <AlarmName> unlocked
Unter Linux wird das Modul Modul benötigt Sys::Statistics::Linux benötigt:
apt-get install libsys-statistics-linux-perl
define pi SYSSTAT 120 600 attr pi filesystems /dev/root attr pi room <Raum> attr pi showpercent 1
Weiter:
define FileLog_pi FileLog /opt/fhem/log/BBxM-%Y-%m.log pi attr FileLog_pi archivedir /opt/fhem/archive/ attr FileLog_pi logtype sysstat:Plot,text attr FileLog_pi nrarchive 1 attr FileLog_pi room <Ihr Raum> define Stats_pi weblink fileplot FileLog_pi:mysysstat:CURRENT <<<==== siehe unten attr Stats_pi alias Systemlast attr Stats_pi label "Systemlast von pi Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}" attr Stats_pi room <Raum>
mysysstat_own.gplot:
############################ # Display the sysload and diskusage values # Corresponding FileLog definition: # define deviceLog FileLog ./log/device-%Y-%m.log device set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title '<L1>' set ylabel "Load" set y2label "/ belegt %" set y2range [0:100] #FileLog 4:load:0: #FileLog 4:/\x3a:0: plot "< awk '/load:/ {print $1, $4}' <IN>" using 1:2 ls l0 axes x1y1 title 'Load' with lines plot "< awk '//:/ {print $1, $4}' <IN>" using 1:2 ls l2fill axes x1y2 title 'Disk' with lines
update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt
define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI
Und anschließend als Beispiel im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen.
update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt
update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt
update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt
Soll auf einen Kalender zugegriffen werden, der https benötigt:
apt-get install libio-socket-ssl-perl
define <name> Calendar ical url <URL> [<interval>] define <name> Calendar ical file <FILENAME> [<interval>]
Falls Benutzername und Passwort nötig sind:
define myCalendar ical url https://user:password@my.domain.com/.../yourcalendar.ics
define <Name des Kalenders> Calendar ical url <der richtige Kalenderlink> 14400
Den richtigen Kalenderlink findet man, wenn man den Kalender über den Browser verwaltet unter der Rubrik „Privatadresse“.
CALVIEW ist ein Hilfsmodul, das alle Termine aus einem bestehenden Kalender des Moduls Calendar in Readings übernimmt.
define <Name> CALVIEW <calendarname> <modus>
<modus>:
set <Name> update
attr myCalView maxreadings 10
1. readingsGroup definieren:
define rg_View_Abfall readingsGroup <Zeile>,<Start>,<Start Zeit>,<Summary>,<Ende>,<End Zeit>
Und rg_View_Abfall das Attribut „nonames“ „1“ geben.
2. Notify erstellen, dass bei Änderungen die readingsGroup mit Leben füllt:
define ntf_ViewAll notify Abfalltermine:t:.* { my $i; my $modtext = "<Datum>,<Zeit>,<Termin>,<Ort>,<Quelle> "; for($i= 1;$i<= ReadingsVal("Abfalltermine","c-today", 0);$i++){ $modtext .= "Abfalltermine:<Heute>,today_".sprintf('%03d',$i)."_btime,today_".sprintf('%03d',$i)."_summary,today_".sprintf('%03d',$i)."_location,today_".sprintf('%03d',$i)."_source ";} for($i= 1;$i<= ReadingsVal("Abfalltermine","c-tomorrow", 0);$i++){ $modtext .= "Abfalltermine:<Morgen>,tomorrow_".sprintf('%03d',$i)."_btime,tomorrow_".sprintf('%03d',$i)."_summary,tomorrow_".sprintf('%03d',$i)."_location,tomorrow_".sprintf('%03d',$i)."_source ";} for($i= 1;$i<= ReadingsVal("Abfalltermine","c-term", 0);$i++){ $modtext .= "Abfalltermine:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_location,t_".sprintf('%03d',$i)."_source ";} fhem("modify rg_View_Abfall $modtext"); fhem("SAVE"); }
http://fhem.de/commandref_DE.html#DOIF
define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Geräte: [device] eq „on“
Die Ausführung erfolgt standardmäßig einmalig nur nach Zustandswechsel des Moduls. Das bedeutet, dass ein mehrmaliges Drücken der Fernbedienung auf „on“ nur einmal „set garage on“ ausführt. Die nächste mögliche Ausführung ist „set garage off“, wenn Fernbedienung „off“ liefert. Wünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Zustand das DOIF-Modul hat, weil z. B. Garage nicht nur über die Fernbedienung geschaltet wird und dann muss man das per „do always“-Attribut angeben:
attr di_Radio do always
Zu beachten ist, dass bei do always der Zustand „cmd_2“ bei Nichterfüllung der Bedingung nicht gesetzt wird. Möchte man dennoch bei Nichterfüllung der Bedingung einen Zustandswechsel auf „cmd_2“ erreichen, so muss man am Ende seiner Definition DOELSE ohne weitere Angaben setzen.
http://www.fhemwiki.de/wiki/Dashboard#dashboard_tab1groups
Als erstes wird ein Dashboard definiert
define <Name> Dashboard
Grundkonfiguration des definierten Dashboards:
attr dashboard_width 80% attr dashboard_tab1groups <GRUPPE1>,<GRUPPE2>,<GRUPPE3>
define Wetter PROPLANTA Aachen
Modul, dass die Wetterdaten (derzeit noch ausschließlich, 2016-03-31) von Yahoo bezieht. Incl. grafischer Darstellung.
Ortsnummer über Yahoo herausfinden, 3600 ist die Aktualisierungshäufigkeit (1h):
define MeinWetter Weather 638242 3600 de attr MeinWetter room Wettervorhersage
define FileLog_MeinWetter FileLog ./log/meinwetter-%Y-%m.log MeinWetter attr FileLog_MeinWetter logtype text attr FileLog_MeinWetter room Wettervorhersage
In vertikaler Richtung für 7 Tage:
define weblink_meinwetter weblink htmlCode {WeatherAsHtml("MeinWetter",7)} attr weblink_meinwetter room Wettervorhersage
DOIF di_Beschattung mit visueller Ausgabe in dummy Beschattung und DEF
([08:00-09:00|1234567] and [A.Clima:temperature] gt 20 and [EG.Wo.Clima_Weather:temperature] gt 21 and [EG.Wo.AD.Terrasse.Rechts] eq "closed" and [EG.Wo.AD.Terrasse.Links] eq "closed") (set EG.Wo.AD.Terrasse.* 40; set Beschattung on) DOELSEIF ([08:00-09:00|1234567] and [A.Clima:temperature] gt 20 and [EG.Wo.Clima_Weather:temperature] gt 21 ) (set EG.Wo.AD.TerrasseLinks 40; set Beschattung on) DOELSEIF ([09:00-10:00|1234567] and [A.Clima:temperature] gt 22 and [EG.Wo.Clima_Weather:temperature] gt 21 and [EG.Wo.AD.Terrasse.Rechts] eq "closed" and [EG.Wo.AD.Terrasse.Links] eq "closed") (set EG.Wo.AD.Terrasse.* 40; set Beschattung on) DOELSEIF ([09:00-10:00|1234567] and [A.Clima:temperature] gt 22 and [EG.Wo.Clima_Weather:temperature] gt 21) (set EG.Wo.AD.TerrasseLinks 40; set Beschattung on) DOELSEIF ([10:00-11:00|1234567] and [A.Clima:temperature] gt 23 and [EG.Wo.Clima_Weather:temperature] gt 21 and [EG.Wo.AD.Terrasse.Rechts] eq "closed" and [EG.Wo.AD.Terrasse.Links] eq "closed") (set EG.Wo.AD.Terrasse.* 40; set Beschattung on) DOELSEIF ([10:00-11:00|1234567] and [A.Clima:temperature] gt 23 and [EG.Wo.Clima_Weather:temperature] gt 21) (set EG.Wo.AD.TerrasseLinks 40; set Beschattung on) DOELSEIF ([13:00|1234567] and [Beschattung] eq "on") (set EG.Wo.AD.TerrasseRechts on; set Beschattung "wait") DOELSEIF ([14:00|1234567] and [Beschattung] eq "wait") (set EG.Wo.AD.TerrasseLinks on; set Beschattung off)
DOIF di_Lueftempfehlung mit visueller Ausgabe in dummy Lueftempfehlung und DEF
([EG.Wo.Clima_Weather:temperature] gt 22 and [A.Clima:temperature] lt ( [EG.Wo.Clima_Weather:temperature]-1 ) ) (set Lueftempfehlung on) DOELSEIF ([EG.Wo.Clima_Weather:temperature] lt 20 and [A.Clima:temperature] gt ( [EG.Wo.Clima_Weather:temperature]+1 ) ) (set Lueftempfehlung on) DOELSEIF ([EG.Wo.Clima_Weather:humidity] lt 40 and [A.Clima:dewpoint] gt ( [EG.Wo.Clima_Weather:dewpoint]+2 ) ) (set Lueftempfehlung on) DOELSEIF ([EG.Wo.Clima_Weather:humidity] gt 60 and [A.Clima:dewpoint] lt ( [EG.Wo.Clima_Weather:dewpoint]-2 ) ) (set Lueftempfehlung on) DOELSE (set Lueftempfehlung off)