MSwitch.pm

Aus FHEMWiki
(Weitergeleitet von Benutzer:Byte09)
Wechseln zu: Navigation, Suche

MSwitch ist ein Hilfsmodul. Es erlaubt das gleichzeitige Schalten von mehreren Devices. Konfiguriert wird das Modul durch ein Webinterface. Zudem sind weitere Abhängigkeiten und Bedingungen wie ereignisgesteuertes und/oder zeitgesteuertes Schalten einzelner Devices einstellbar.

MSwitch kann damit die Funktionen von mehreren Hilfsmodulen wie Notify, at, Watchdog, DOIF etc. ersetzen.

Das define eines MSwitch Devices generiert lediglich eine 'leere Hülle'. Alle relevante Einstellungen werden in Readings und/oder Hashes gespeichert. Daher stehen relevanten Daten nicht in der fhem.cfg! Vielmehr finden sich diese Daten in der Datei fhem.save (die Speicherung erfolgt durch den Befehl Fhemsave).


MSwitch.pm
Zweck / Funktion
MSwitch
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Modulname 98_MSwitch.pm
Ersteller Byte09
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Allgemeines

Das Modul befindet sich im Betastadium. Es kann nicht ausgeschlossen werden, dass es zu unerwünschten Effekten oder zu Warnungen im Log etc. kommt.

Um das Modul zu nutzen, muss man sich zuerst drei Dinge überlegen:

  • Welches Gerät soll auslösen? Dies ist der Trigger. Ein Trigger muss on- und off-Befehle haben.
  • Wenn der Trigger ausgelöst hast, welche nachfolgenden Geräte sollen dann geschaltet werden? Dabei unterscheidet das Modul zwischen den Geräten, die bei einem on-Befehl (auch 'on-Zweig'), und den Geräten, die bei einem off-Befehl (auch 'off-Zweig') ausgelöst werden.
  • Welche weiteren Bedingungen sollen für die Geräte, die im on- bzw off-Zweig liegen, noch gelten? Hier sind ereignisgesteuerte woe auch zeitgesteuerte Bedingungen möglich.

Voraussetzungen

keine

Installation

Das MSwitch Modul wird nicht über das FHEM Update verteilt. Die in der Entwicklung befindliche Version kann mit den nachfolgenden Befehlen geladen werden.

MSwitch Modul einmalig installieren/aktualisieren mit folgendem Befehl im WebCMD:

update all https://raw.githubusercontent.com/Byte009/FHEM-MSwitch/master/controls_mswitch.txt

Um das Modul permanent in das FHEM Update aufzunehmen, ist folgender Befehl in das WebCMD einzugeben:

update add https://raw.githubusercontent.com/Byte009/FHEM-MSwitch/master/controls_mswitch.txt

Definition und Möglichkeiten des Moduls

Mit Hilfe von MSwitch kann man mehrere Devices gleichzeitig schalten. Ausgelöst werden diese Schaltungen durch den on- sowie den off-Befehl bei MSwitch. Die gleichzeitig zu schaltenden Devices werden wir 'Zweig' nennen (on-Zweig oder off-Zweig). Die einzelnen Devices jedes Zweiges können mit weiteren Schaltbedingungen versehen werden (zeit- oder ereignisgesteuert).

Folgende Möglichkeiten zum definieren des MSwitch Devices stehen zur Verfügung:

define NAME MSwitch

Es wird ein "leeres" leeres Device angelegt, das dann komplett über das Webinterface konfigurierbar ist.

define NAME MSwitch DEVICE

Hier wird ein Device angelegt, bei welchen das rechts angegebene DEVICE als Trigger fungiert. Der Trigger kann später jederzeit geändert werden.

set-Befehle

Es sind derzeit die folgenden set-Befehle implementiert.

set on

Setzt das Device in den Status 'on'. Alle Befehle der 'on-Zweige' werden ausgeführt.

set off 

Setzt das Device in den Status 'off'. Alle Befehle der 'off-Zweige' werden ausgeführt.

MSwitch_backup

Erstellt eine Backup-Datei aller MSwitch Devices unter ./fhem/MSwitch_backup.cfg.
Daten dieser Datei können im Bedarfsfall für einzelne oder gleichzeitig alle MSwitch Devices wieder zurück gespielt (hergestellt) werden.

del_delays

Löscht alle anstehenden Timer und es wird eine Neuberechnung durchgeführt, falls 'on' oder 'off' Zeiten gesetzt sind.

get-Befehle

active_timer
show_timer

Zeigt alle anstehenden (gesetzten) Timer des Devices, die aus zeitabhängigen oder verzögerten Schaltbefehlen resultieren.

delete_timer

Löscht alle anstehenden (gesetzten) Timer des Devices, die aus zeitabhängigen oder verzögerten Schaltbefehlen resultieren. Schaltbefehle, basierend auf rein zeitabhängigen Angaben, werden neu berechnet und gesetzt.

restore_MSwitch_data 
this_Device

Stellt die Daten des Devices aus der Backupdatei wieder her, sofern diese in der Backupdatei gefunden werden (gesucht wird hier nach dem Namen des Devices).

all_Devices 

Stellt die Daten aller MSwitch Devices wieder her, sofern diese in der Backupdatei vorhanden sind. Diese Aktion kann einige Zeit in Anspruch nehmen und wird daher im Hintergrund (nonblocking) ausgeführt. Nach Beendigung erfolgt eine Benachrichtigung.

Die Devices sind nach einem Restore funktionsfähig. Empfohlen wird ein Neustart von FHEM.
get_config 

Zeigt den Konfigurationsfile des MSwitchdevices an, dieser kann in dem Fenster editiert werden. Das sollte nur von Erfahrenen Usern getan werden ! Eine falsche Konfiguration kann hier zu einem FHEM Absturz führen.

Attribute

Folgende Attribute stehen zur Verfügung:

MSwitch_Help (0:1)

Schaltet Hilfebuttons zu den einzelnen Eingabefeldern an oder aus.

MSwitch_Debug (0:1:2)

0 - Abgeschaltet
1 - Schaltet Felder zum testen der Conditionstrings etc. an
2 - erweiterte Debugfunktion (nur für Entwicklung)

MSwitch_Expert (0:1)

In der Liste der möglichen Trigger erscheint das Selectfeld 'GLOBAL'. Dieses ermöglicht das Setzen eines Triggers auf alle Events und damit nicht nur auf einzelne Devices. In einem weiteren Feld kann eine weitere Selektion der triggernden Events erfolgen.

Es stehen weitere Felder 'Repeats' und 'Repeatdelay in sec' zur Verfügung. Eine hier getätigte Einstellung bewirkt X-fache Wiederholung von gesetzten Befehlen im Abstand der gesetzten Sekunden.

MSwitch_Extensions (0:1)

Es wird eine zusätzliche Schaltoption 'MSwitchToggle' in den Geräten angeboten. Diese kann genutzt werden, wenn zuschaltende Geräte eine Togglefunktion nicht von Haus aus anbieten.

Eine Angabe muss in folgendem Format gemacht werden :
on/off/state/suchmuster1/suchmuster2, wobei diel letzten 3 Angaben Optional sind.

Funktion: Bei Ausführung des Befehls wird das Gerät 'on' oder 'off' geschaltet (on/off), Voraussetzung ist, das der 'state' dieses Gerätes auch den 'state on' oder 'off' annimmt. Sollte dieses nicht der Fall sein, so kann mit dem Feld 'state' angegeben werden, in welchen Reading der aktuelle Status vorkommt und wie dieser lautet (suchmuster1/suchmuster2). Dieses 'state' kann mehrere Angaben enthalten, das Vorkommen der Suchmuster ist aber Voraussetzung.

MSwitch_Delete_Delays (0:1)

Bewirkt das Löschen aller anstehende Timer (Delays) bei dem Auftreten eines erneuten, passenden Events. Bei der Option '0' bleiben bereits gesetzte Delays aus einem vorherigen, getriggertem Event erhalten und werden ausgeführt.
Empfohlene Einstellung (1)

MSwitch_Include_Devicecmds (0:1)

Bewirkt die Aufnahme aller Devices in die Auswahlliste 'Affected Devices', die einen eigenen Befehlssatz liefern (bei Abfrage set DEVICE ?).
Bei gesetzter Option (0) werden diese Devices nicht mehr berücksichtigt und somit nicht mehr angeboten.
Empfohlene Einstellung (1).

MSwitch_Include_Webcmds (0:1)

Bewirkt die Aufnahme aller Devices in die Auswahlliste 'Affected Devices', die einen eigenen Befehlssatz in dem Attribut Webcmd hinterlegt haben. Die in Webcmd hinterlegten 'Befehle' werden in den Auswahlfeldern angeboten.

Bei gesetzter Option (0) werden diese Devices nicht mehr berücksichtigt und somit nicht mehr angeboten, wenn sie nicht zusätzlich einen eigenen Befehlssatz (set DEVICE ?) liefern.
Empfohlene Einstellung (0), Einsatz nach Bedarf.

MSwitch_Activate_MSwitchcmds (0:1)

Fügt jedem vorhandenen Device as Attribut 'MSwitchcmd' hinzu.

MSwitch_Include_MSwitchcmds (0:1)

Bewirkt die Aufnahme aller Devices in die Auswahlliste 'Affected Devices', die einen eigenen Befehlssatz in dem Attribut MSwitchcmds hinterlegt haben. Die in MSwitchcmds hinterlegten 'Befehle' werden in den Auswahlfeldern angeboten. Bei gesetzter Option (0) werden diese Devices nicht mehr berücksichtigt und somit nicht mehr Angeboten, wenn sie nicht zusätzlich einen eigenen Befehlssatz (set DEVICE ?) liefern.
Empfohlene Einstellung (0), Einsatz nach Bedarf.

MSwitch_Lock_Quickedit (0:1)

Voreinstellung für die Auswahlliste 'Affected Devices'. Bei der Option (1) ist diese voreingestellt gesperrt und kann nur über einen zusätzlichen Button geändert werden. Da es sich hier um ein 'multiple select fiel(?)' handelt ist die Voreinstellung 1, um versehentliche nicht gewünschte Änderungen zu vermeiden (Auswahl einer Option ohne 'Strg' bewirkt das löschen aller bereits gesetzten Optionen).
Empfohlene Einstellung (1).

MSwitch_Ignore_Types

Beinhaltet eine Liste von Devicetypen, die in den Auswahllisten nicht dargestellt werden. Hier ist es sinnvoll, Devicetypen einzutragen, die in aller Regel nicht geschaltet werden oder nicht geschaltet werden können, um die Auswahllisten übersichtlicher zu halten. Einzelne Devicetypen sind durch Leerzeichen zu trennen.
Voreinstellung: notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul.

MSwitch_Trigger_Filter

Beinhaltet eine Liste von Events, die bei eingehenden Events unberücksichtigt bleiben. Diese werde dann auch nicht gespeichert.
Hier kann mit Wildcards (*) gearbeitet werden. Einzelne Events sind durch Komma ',' zu trennen.
Empfohlene Einstellung (keine).

MSwitch_Wait (sec)

Bei gesetztem Attribut (Zeit in Sekunden) nimmt Das MSwitch Device für den eingestellten Zeitraum keine Befehle mehr entgegen und ignoriert eingehende Events

MSwitch_Mode (Notify,Full,Toggle)

Beschreibung folgt

MSwitch_Inforoom

Mit diesem Attribut wird die Raumansicht eines mit dem Attribut bestimmten Raumes verändert. Dadurch sollen die wichtigsten Informationen aller MSwitch-Devices auf eine Seite dargestellt werden. Zur Nutzung sollten alle MSwitch-Devices (zusätzlich) in einen Raum sortiert werden und dieser Raum im Attribut eingestellt werden.

Wichtig: Eine Änderung dieses Attributes bewirkt immer eine Änderung dieses Attributes in allen MSwitch devices: Es muss nur in einem Device gesetzt oder gelöscht werden um alle Devices zu erfassen.

Es werden folgende Informationen bereitgestellt:

- Infobutton zeigt den im Device gespeicherten Textes des Attributes 'comment'
- Device und Events, die das Device triggern
- Zeiten, zu denen verschiedene Zweige des Devices ausgeführt werden
- Devices, die durch das MSwitch Device geschaltet werden - State des Devices

Webinterface

trigger device/time

Das Webinterface ist in vier Abschnitte unterteilt. Änderungen in jedem Abschnitt müssen in dem jeweiligen Feld bestätigt werden und auch nur diese werden gespeichert.
Damit sind nur Änderungen in einem Feld möglich und müssen bestätigt werden, bevor ein weiteres Feld bearbeitet wird. Andernfalls gehen Änderungen in den anderen Bereichen verloren!

trigger device/time

In diesem Eingabefeld kann man sowohl das Triggerdevices als auch die Zeiten, zu denen ein Zweig des Devices ausgeführt werden soll, auswählen. Das Eingabefeld besteht aus den folgenden Einzelfeldern.

Trigger device

In diesem Feld erfolgt die Auswahl des Devices, dessen Events eine Aktion auslösen sollen. Es werden alle verfügbaren Devices in einem Dropdownfeld angeboten.
Zusätzlich gibt es eine Auswahl 'GLOBAL', wenn das Attribut 'MSwitch_Expert' gesetzt ist. Es kann ein Device bzw. die Option 'GLOBAL' angewählt werden. Bei Auswahl dieser Option werden alle von FHEM generierten Events durch das MSwitch Device weiterverarbeitet, eine weitere Begrenzung der aktivierenden Events kann (und sollte) dann in einem folgenden Eingabefeld erfolgen, um die Systemlast zu reduzieren.
Alle Events des gewählten Devices werden vom Modul weiterverarbeitet. Eine Selektion auf bestimmte Events und entsprechende Aktionen erfolgt an späterer Stelle.

Trigger Device Global Whitelist

Dieses Feld ist nur verfügbar, wenn als Trigger 'GLOBAL' gewählt wurde.

Hier kann die Liste eingehender Events weiter eingeschränkt werden, falls als Triggerdevice 'GLOBAL' gewählt wurde. Hierbei handelt es sich um eine Whitelist, d.h. wenn es keine Einträge gibt, werden Events aller Devices verarbeitet. Sobald ein oder mehrere Einträge gemacht werden, werden nur noch Events der hier benannten Devices verarbeitet. Als Angabe können hier Devices benannt werden oder ganze DeviceTypen (z.B TYPE=FS20). Mehrere Angaben sind durch Komma zu trennen.

Trigger conditions

Hier kann die Angabe von Bedingungen erfolgen, die zusätzlich zu dem triggernden Device erfüllt sein müssen. Diese Bedingungen sind eng an DOIF-Syntax angelehnt.
Wird in diesem Feld keine Angabe gemacht, so erfolgt der Schaltvorgang nur durch das triggernde Device ohne weitere Bedingungen.

- Zeitabhängigkeit

[19:10-23:00] - Trigger des Devices erfolgt nur in angegebenem Zeitraum

- Readingabhängige Trigger

[Devicename:Reading] =/>/< X oder [Devicename:Reading] eq "x" - Trigger des Device erfolgt nur bei erfüllter Bedingung.

Bei der Abfrage von Readings nach Strings (on,off,etc.) ist statt "=" "eq" zu nutzen und der String muss in Anführungszeichen "" gesetzt werden!

Die Kombination mehrerer Bedingungen und Zeiten ist durch AND oder OR möglich.
[19:10-23:00] AND [Devicename:Reading] = 10 - beide Bedingungen müssen erfüllt sein.
[19:10-23:00] OR [Devicename:Reading] = 10 - eine der Bedingungen muss erfüllt sein.

sunset:
Bedingungen werden mit zusätzlichen {} eingefügt z.B.: [{ sunset() }-23:00].

$we:
Die globale Variable $we ist nutzbar und muss in {} gesetzt werden.
{ !$we } löst den Schaltvorgang nur Werktagen an aus.
{ $we } löst den Schaltvorgang nur an Wochenenden, Feiertagen aus.

Es ist auf korrekte Eingabe der Leerzeichen zu achten.

Soll nur an bestimmten Wochentagen geschaltet werden, muss eine Zeitangabe gemacht werden und durch die Wochentage wie etwa beispielhaft in |135 ergänzt werden.

[10:00-11:00|13] - würde den Schaltvorgang z.B nur Montag und Mittwoch zwischen 10 Uhr und 11 Uhr auslösen. Die Wochentage Montag-Sonntag werden dabei den Zahlen 1-7 zugeordnet.

Überschreitet die Zeitangabe die Tagesgrenze (24:00 Uhr), so gelten die angegebenen Tage noch bis zum Ende der angegebenen Schaltzeit (beispielsweise würde dann am Mittwoch noch der Schaltvorgang erfolgen, obwohl als Tagesvorgabe Dienstag gesetzt wurde).

Bedingungen in diesem Feld gelten nur für auslösende Trigger eines Devices und haben keinen Einfluss auf zeitgesteuerte Auslöser.

Trigger time

Ermöglicht die Angabe von Zeiten, zu denen der entsprechende Zweig ausgelöst werden soll.
Mehrere Zeitvorgaben können direkt aneinandergereiht werden.

[STUNDEN:MINUTEN|TAGE] - Tage werden von 1-7 gezählt, wobei 1 für Montag steht, 7 für Sonntag. [17:00|1][18:30|23] würde den Trigger im gewählten Zweig montags um 17 Uhr auslösen und dienstags sowie mittwochs um 18:30 Uhr.

trigger details

trigger details

Während im obigen Feld das Device ausgewählt werden konnte, wird hier das Ereignis festgelegt. Das Eingabefeld besteht aus mehreren Einzelfeldern.

switch Mswitch_Device on + execute 'on' (oder 'off') commands

Hier kann aus einer vorbelegten Dropdownliste ausgewählt werden, welches ankommende Event den entsprechenden Befehlszweig auslösen soll. In dieser Liste werden bei entsprechender Einstellung alle ankommenden Events eines vorher definierten Devices gespeichert. In einem weiteren Feld (siehe unten) können Events manuell zugefügt werden. In diesem Zweig wird das MSwitch Device bei ankommendem Event in den Status "On" (bzw. "Off") versetzt. Dieser Status hat lediglich die Funktion in bestimmten Anwendungsfällen eine Selbstkontrolle zu ermöglichen. Dazu später mehr.

execute 'on' (oder 'off') commands only

siehe "switch Mswitch_Device on + execute 'on' commands".

Dieser Zweig unterscheidet sich von dem Zeig "switch Mswitch_Device on + execute 'on' commands" lediglich darin, das er die definierten Befehle zwar ausführt, das MSwitch Device aber nicht in den Zustand "On" versetzt. Analog für "Off".

Save incomming events

Bei Aktivierung dieser Option werden alle ankommenden Events des oben definierten Devices (oder Global) gespeichert und in entsprechenden Dropdownlisten angeboten.
Da hier doch erhebliche Datenmengen anfallen können (je nach Device) wird empfohlen, diese Option nach der Konfiguration des Devices zu deaktivieren.

add event

hier besteht die Möglichkeit, unabhängig von der Option, ankommende Events automatisch zu speichern, manuell Events anzulegen, die in den Dropdownliste zur Auswahl angeboten werden, ohne das entsprechendes Event erst vom Device geliefert werden muss.
Es können mehrere Events gleichzeitig eingegeben werden, eine Trennung erfolgt durch " , "
Hier ist zu unterscheiden, ob das gewählte triggernde Device ein einfaches Device ist oder ob der Trigger 'GLOBAL' ist.
Bei triggernden Devices können Events in folgendem Formaten zugefügt werden:

- * - Aktion erfolgt auf alle auftretende Events des entsprechenden Device
- reading:wert (z.b. state:on ) - Aktion erfolgt nur auf das Event "state:on"
- reading:* (z.b. state:* ) - Aktion erfolgt auf die Events "state:(on,off,etc.)
- reading:(wert1/wert2/wert3) (z.b. state:(left/right) - Aktion erfolgt nur auf Events "state:left" oder "state:right" etc.

Falls auf 'GLOBALE' Events getriggert wird, muss das auslösende Device vorangestellt werden:

- * - Aktion erfolgt auf alle auftretende Events des entsprechenden Device
- device:reading:wert (z.b. device:state:on ) - Aktion erfolgt nur auf das Event "device:state:on"
- device:reading:* (z.b. device:state:* ) - Aktion erfolgt auf die Events "device:state:(on,off,etc.)
- device:reading:(wert1/wert2/wert3) (z.b. device:state:(left/right) - Aktion erfolgt nur auf Events "device:state:left" oder "devicestate:right" etc.

Das Device kann auch hier gegen "*" ersetzt werden (*:state:on). In diesem Fall erfolgt eine Aktion auf alle Events die z.B "state:on" enthalten, egal welches Device triggert.

test event

Dieses Feld wird angeboten, wenn entsprechende vom Triggerdevice gelieferte Events gespeichert wurden.
Durch Auslösen dieser Funktion wird das Event simuliert und entsprechende definierte Aktionen ausgelöst. Diese Funktion dient ausschließlich zum Testen der eingestellten Konfiguration. Alle entsprechenden Befehle werden ausgeführt, als würde das Event real eintreffen.

apply filter to saved events

Beschreibung folgt

clear saved event

Es werden alle gespeicherten Events gelöscht.
Ausnahme: Events, die als Trigger eingestellt sind, bleiben erhalten.

affected devices

affected devices

Dieser Abschnitt beinhaltet die Auswahl der Devices, die auf ein Event reagieren sollen.

In dem Auswahlfeld werden alle Devices angeboten, die eines der folgenden Kriterien erfüllen:

  1. Die Abfrage "set Device ?" liefert einen Befehlssatz
  2. Das Attribut 'webcmd' des Devices enthält Einträge
  3. Das Attribut 'MSwitch_Activate_MSwitchcmds' ist aktiviert und das Attribut 'MSwitchcmds' des betreffenden Devices enthält einen Befehlssatz

Einzige Ausnahme ist der erste Listeneintrag 'FreeCMD'. Die Auswahl dieses Eintrages bietet später die Möglichkeit Befehle auszuführen, die nicht an ein Device gebunden sind. Der Code in einem FreeCmd kann entweder reiner FHEM-Code sein ( set device on ) oder reiner Perl-Code. Wenn es sich um reinen Perl-Code handelt, ist dieser in geschweifte Klammen zu setzen { Perl-Code } .

device actions

device_actions

Dieser Abschnitt beinhaltet die Einstellungen für die auszuführenden Aktionen der eingestellten Devices und enthält folgende Felder:

MSwitch on cmd:/MSwitch off cmd:

Hier kann die Auswahl für den Befehl des betreffenden Devices erfolgen, der ausgeführt wird, wenn ein Event die Option 'switch DEVICE on/off + execute on commands' oder 'execute on/off commands only' getriggert hat.
Es werden alle verfügbaren Befehle des Devices zur Auswahl angeboten. Je nach Attribut-Einstellungen werden Einträge aus entsprechenden 'webcmds" oder 'MSwitchcmds' einbezogen. In Abhängigkeit des Befehles stehen unter Umständen weitere Felder oder Widgets zur Verfügung.

05.04.2018 NEU: Auswahlfeld 'MSwitchtoggle' -> Beschreibung wird noch ergänzt !

on condition:/off condition:

Mit diesem Feld kann die Ausführung des Befehls von weiteren Bedingungen abhängig gemacht werden.

  1. Zeitabhängiges schalten: [19:10-23:00] - Schaltbefehl erfolgt nur in angegebenem Zeitraum
  2. Readingabhängiges schalten [Devicename:Reading] =/>/< X oder [Devicename:Reading] eq "x" - Schaltbefehl erfolgt nur bei erfüllter Bedingung.

Soll nur an bestimmten Wochentagen geschaltet werden, muss eine Zeitangabe gemacht werden und durch z.B. |135 ergänzt werden.
[10:00-11:00|13] würde den Schaltvorgang z.B nur Montag und Mittwoch zwischen 10 Uhr und 11 Uhr auslösen. Hierbei zählen die Wochentage von 1-7 für Montag-Sonntag.

Die Kombination mehrerer Bedingungen und Zeiten ist durch AND oder OR möglich:
[19:10-23:00] AND [Devicename:Reading] = 10 - beide Bedingungen müssen erfüllt sein.
[19:10-23:00] OR [Devicename:Reading] = 10 - eine der Bedingungen muss erfüllt sein.

Achtung! Bei der Abfrage von Readings nach Strings (on, off, etc.) ist statt "=" "eq" zu nutzen und der String muss in "x" gesetzt werden! Es ist auf korrekte Eingabe der Leerzeichen zu achten.

sunset:
sunsetbedingungen werden mit zusätzlichen {} eingefügt z.B.:

[{sunset()}-23:00].

$we:
Die globale Variable $we ist nutzbar und muss {} gesetzt werden.
{ !$we } löst den Schaltvorgang nur Werktagen aus
{ $we } löst den Schaltvorgang nur Wochenenden, Feiertagen aus

Achtung: Bei Anwendung der geschweiften Klammern zur Einleitung eines Perl Ausdrucks ist unbedingt auf die Leerzeichen hinter und vor der Klammer zu achten !

Überschreitet die Zeitangabe die Tagesgrenze (24:00 Uhr), so gelten die angegebenen Tage noch bis zum Ende der angegebenen Schaltzeit (zum Beispiel würde auch am Mittwoch noch der Schaltvorgang erfolgen, wenn als Tagesvorgabe Dienstag gesetzt wurde).

$EVENT:
Die Variable EVENT enthält den auslösenden Trigger, d.h. es kann eine Reaktion in direkter Abhängigkeit zum auslösenden Trigger erfolgen.

[$EVENT] eq "state:on" würde den Kommandozweig nur dann ausführen, wenn der auslösende Trigger "state:on" war. Wichtig ist dieses, wenn bei den Triggerdetails nicht schon auf ein bestimmtes Event getriggert wird, sondern hier durch die Nutzung eines Wildcards (*) auf alle Events getriggert wird, oder auf alle Events eines Readings z.B. (state:*)

on delay:/off delay:

 ! Funktionsänderung mit V1.3 - Beschreibung folgt !

ein Eintrag in diesem Feld führt zur verzögerten Ausführung des Befehls unter 'MSwitch on/off cmd' nach eintreffen des Events.

Achtung: In diesem Fall werden alle weiteren 'conditions' erst nach Ablauf der Verzögerung und somit erst unmittelbar vor der Befehlsausführung geprüft !

Statt einer unmittelbaren Zeitangabe kann hier auch ein Verweis auf ein Reading eines Devices erfolgen :
[NAME.reading] des Devices ->z.B. [dummy.state]
Das Reading muss in folgendem Format vorliegen: hh:mm:ss

add action

Mit diesem Button kann ein weiteres Eingabefeld für das entsprechende Device angelegt werden, um z.B einen weiteren Befehl (ggf.) zeitverzögert auszuführen.

delete this action

Mit diesem Button wird der entsprechende Befehl für das Device gelöscht.

check condition
check

Die angegebenen 'conditions' werden in Zusammenhang mit ggf. ausgewählten Devices auf Syntax und Ergebnis geprüft. Es erfolgt eine Ausgabe des Prüfungsergebnisses.


Konfigurationsbeispiele

ITFernbedienung -> Sonoff
- IT Fernbedienung_Sonoff schalten
Dashbuttons
- Dashbuttons


Tipps, Tricks, Kurzbeispiele

wird stetig ergänzt .

Daten zwischenspeichern

- In einem MSwitch device besteht relativ einfach die Möglichkeit, Werte ( z.B readings oder states anderer Devices ) zwischenzuspeichern. (ab V1.45 !)
Hierzu ist ein FreeCmd mit folgendem Inhalt anzulegen :
{ readingsSingleUpdate( $hash, "readingname", ReadingsVal( "dummy1", "state", "undef" ), 1 ); }
Hiermit wird im MSwitchdevice ein eigenes Reading angelegt, was den Inhalt des 'states' von 'Dummy1' zum Zeitpunkt des MSwitch-Aufrufes erhält.
Dieses Reading steht dann in weiteren Befehlen mit [<MSwitchname>:<readingname>] sofort (noch im selben Durchlauf) zur Verfügung, da Freecmds immer zuerst abgearbeitet werden.

Ein FreeCmd mit folgendem Inhalt löscht dieses Reading wieder:
deletereading <MSwitchdevice> readingname

Bezug z.B. auf: https://forum.fhem.de/index.php/topic,87938.0.html
wäre auch hier ein Ansatz:https://forum.fhem.de/index.php/topic,87957.0.html

Ich habe an dieser Stelle nicht diesen Lösungsvorschlag gewählt, sondern erst später versucht es nur mit MSwitch zu lösen.


blinken - falls nicht im Device vorhanden

MSwitch MSwitchblink.png


lässt ein beliebiges Device 5 mal togglen, mit einem Intervall von 0.5 Sekunden (Blinkzeit somit 2,5 Sekunden)
Die MSwitchtoggle-Funktion muss per ATTR aktiviert werden.
Die Repeatfunktion ist nur im Expertmode verfügbar, auch per ATTR einstellbar.