ReadingsProxy: Unterschied zwischen den Versionen
Andies (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Andies (Diskussion | Beiträge) |
||
Zeile 20: | Zeile 20: | ||
Das Readingsproxxy ist ein eigenständiges Gerät und wird durch den Befehl | Das Readingsproxxy ist ein eigenständiges Gerät und wird durch den Befehl | ||
define <name> readingsProxy <device>:<reading> | define <name> readingsProxy <device>:<reading> | ||
definiert. Dabei bezieht sich <device> auf das Gerät, dessen Reading durch den Proxy verwaltet werden soll, <reading> ist das zu verwaltende Reading. Sind Wildcards wie .* möglich? Im Folgenden wird das Readingsproxy als ''Proxy Device'' bezeichnet. | definiert. Dabei bezieht sich <device> auf das Gerät, dessen Reading durch den Proxy verwaltet werden soll, <reading> ist das zu verwaltende Reading. Sind Wildcards wie .* und RegEx möglich? Im Folgenden wird das Readingsproxy als ''Proxy Device'' bezeichnet. | ||
=== Attribute === | === Attribute === |
Version vom 7. Oktober 2017, 07:47 Uhr
readingsProxy | |
---|---|
Zweck / Funktion | |
Aufsplitten von Mehrfachgeräten in einzelne FHEM-Devices | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 33_readingsProxy.pm |
Ersteller | Andre (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Eventuell ist es nötig, die Readings eines Gerätes durch ein anderes, eigenständiges Gerät verwalten (auslesen, beschreiben) zu lassen. Dies kann durch das FHEM-Hilfsmodul readingsProxy geschehen. Auf diese Weise können beispielsweise Mehrfachsensoren und Aktoren (1-Wire 2- oder 8-fach Schalter, EnOcean Serienschalter, ...) einzeln bedienbaren Geräte zugeordnet.
Sobald das Proxy Device on und off bereitstellt, stehen über die setExtentions auch on-for-timer, on-till, blink, usw. zur Verfügung.
Für das Proxy Device sind keine speziellen Voraussetzungen nötig.
Anwendung
Definition
Das Readingsproxxy ist ein eigenständiges Gerät und wird durch den Befehl
define <name> readingsProxy <device>:<reading>
definiert. Dabei bezieht sich <device> auf das Gerät, dessen Reading durch den Proxy verwaltet werden soll, <reading> ist das zu verwaltende Reading. Sind Wildcards wie .* und RegEx möglich? Im Folgenden wird das Readingsproxy als Proxy Device bezeichnet.
Attribute
Attribute mit spezieller Bedeutung für Proxy Devices:
- readingFnAttributes
- ...
- getFn
- ...
- setFn
- ...
- valueFn
- ...
Anwendungsbeispiele
Achtung: Die Beispiele enthalten keine Maskierungen oder Verdoppelungen für ; und Zeilenende, sondern sind so angegeben, wie sie in FHEMWEB im Befehl-Eingabefeld oder nach Klick auf DEF eingegeben werden. Bei manuellem Einfügen in eine Konfigurationsdatei sind diese Maskierungen oder Verdoppelungen natürlich vorzunehmen.
1-Wire dual switch (DS2406) mit OWDevice als input (erster Kanal)
define myProxy readingsProxy myDS2406:latch.A attr myProxy valueFn {($VALUE == 1)?"on":"off"}
1-Wire 8-fach switch (DS2408) mit OWSWITCH als Output (erster Kanal)
define SchalterA readingsProxy OWX:xxx attr SchalterA setFn {($CMD eq "on")?"output A off":"output A on"} attr SchalterA setList on off attr SchalterA valueFn {($VALUE == 0)?"off":"on"} attr SchalterA webCmd on:off
on/off vertauschen
define proxy readingsProxy meineLampe:state attr proxy setFn {($CMD eq "on")?"off":"on"} attr proxy valueFn {($VALUE eq "on")?"off":"on"}
EnOcean Serienschalter
Siehe auch EnOcean Starter Guide
#Kanal A zur Steuerung mit on und off define Schalter_channelA readingsProxy Schalter:state attr Schalter_channelA setFn {($CMD eq "on")?"AI":"A0";;} attr Schalter_channelA setList on off attr Schalter_channelA valueFn {$LASTCMD} attr Schalter_channelA webCmd on:off #Kanal B zur Steuerung mit on und off define Schalter_channelB readingsProxy Schalter:state attr Schalter_channelB setFn {($CMD eq "on")?"BI":"B0";;} attr Schalter_channelB setList on off attr Schalter_channelB valueFn {$LASTCMD} attr Schalter_channelB webCmd on:off
setExtensions für Geräte implementieren
Wenn ein (Original-)Device von sich aus die setExtentions nicht unterstützt, kann das durch Verwendung eines Proxy Device behoben/implementiert werden. Sobald ein Proxy Device on und off bereitstellt, stehen über die setExtensions auch on-for-timer, on-till, blink, usw. zur Verfügung.
define STECKD_TEST readingsProxy STECKD_BAUHS:state attr STECKD_TEST setFn {($CMD eq "on")?"angle 3874":"angle 3873";} attr STECKD_TEST setList on off attr STECKD_TEST valueFn {$LASTCMD}
Beispiel aus diesem Forenthread übernommen. (Anmerkung: Die im Forenthread noch verwendete Lösung über setFN mit "readingsSingleUpdate" sowie valueFn {} ist nach Einführung von $LASTCMD in readingsProxy nicht mehr notwendig. Dementsprechend wurde hier die neuere Variante mit $LASTCMD genutzt)
Shellkommando zum Schalten verwenden
define <name> readingsProxy <name> attr <name> setList on off attr <name> setFn { fhem('"<shell command to execute> '. ($CMD eq 'on' ?'<on>':'<off>') .'"') }
Button für eine bestimmte Harmony Activity im Frontend und Homekit
siehe harmony
Links
- Forenthema zur Vorstellung des Moduls
- Forenthema zur Fragestellung "DS2408 Ports aufsplitten"
- Forenthema zur Fragestellung "Zwei Icons für Channel A und B"