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
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>