ReadingsProxy: Unterschied zwischen den Versionen
Andies (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Andies (Diskussion | Beiträge) |
||
| Zeile 17: | Zeile 17: | ||
=== Definition === | === 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 .* möglich? | |||
=== Attribute === | === Attribute === | ||
Version vom 7. Oktober 2017, 08:45 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. Im Folgenden wird dieses Gerät als Proxy Device bezeichnet. 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 .* möglich?
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"