ReadingsProxy: Unterschied zwischen den Versionen

Aus FHEMWiki
K (<code>-Tags wg. Darstellungsfehlern nach Wiki-Softwareupdate korrigiert)
K (diverse kleinere Korrekturen und Ergänzungen)
Zeile 3: Zeile 3:
|ModPurpose=Aufsplitten von Mehrfachgeräten in einzelne FHEM-Devices
|ModPurpose=Aufsplitten von Mehrfachgeräten in einzelne FHEM-Devices
|ModType=h
|ModType=h
<!-- |ModCategory= (noch?) nicht verwendet -->
|ModCmdRef=readingsProxy
|ModCmdRef=readingsProxy
|ModTechName=33_readingsProxy.pm
|ModTechName=33_readingsProxy.pm
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=430 Andre / justme1968]}}
|ModForumArea=Automatisierung
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsProxy]] bietet die Möglichkeit ein Reading oder einen Teil eines Readings eines Devices als eigenständiges Device zu verwenden.
|ModOwner=Andre ({{Link2FU|430|Forum}} / [[Benutzer Diskussion:justme|Wiki]])}}
Hiermit können z.b. mehrfach Sensoren und Aktoren (1-wire 2- oder 8-fach Schalter, EnOcean Serienschalter, ...) in einzeln bedienbare Geräte aufgeteilt werden.


Sobald das proxy Device on und off bereitstellt, stehen über die [http://fhem.de/commandref.html#setExtensions setExtentions] auch on-for-timer, on-till, blink, usw. zur Verfügung.  
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsProxy]] bietet die Möglichkeit, ein Reading oder einen Teil eines Readings eines Devices als eigenständiges Device (im Folgenden auch als ''Proxy Device'' bezeichnet) zu verwenden. Hiermit können z.B. Mehrfachsensoren und Aktoren (1-wire 2- oder 8-fach Schalter, EnOcean Serienschalter, ...) in einzeln bedienbare Geräte aufgeteilt werden.


Hier soll eine Sammlung von Beispielen zur Verwendung des ''readingsProxy'' mitsamt der zugehörigen Screenshots entstehen.
Sobald das Proxy Device ''on'' und ''off'' bereitstellt, stehen über die [http://fhem.de/commandref.html#setExtensions setExtentions] auch ''on-for-timer'', ''on-till'', ''blink'', usw. zur Verfügung.
 
Hier soll eine Sammlung von Beispielen zur Verwendung des ''readingsProxy'' mit (sofern im jeweiligen Fall sinnvoll) den zugehörigen Screenshots entstehen.


== Beispiele ==
== Beispiele ==
Achtung: Die Beispiele enthalten keine Maskierungen oder Verdoppelungen für ; und Zeilenende, sondern sind so angegeben, wie sie in Fhemweb, in der command box oder nach Klick auf DEF eingegeben werden. Beim manuellen Einfügen in eine [[Konfiguration|Konfigurationsdatei]] sind diese Maskierungen oder Verdoppelungen natürlich vorzunehmen.
Achtung: Die Beispiele enthalten keine Maskierungen oder Verdoppelungen für {{Taste|;}} 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 [[Konfiguration|Konfigurationsdatei]] sind diese Maskierungen oder Verdoppelungen natürlich vorzunehmen.
 


=== 1-wire dual switch (DS2406) mit OWDevice als input (erster Kanal) ===
=== 1-wire dual switch (DS2406) mit OWDevice als input (erster Kanal) ===
<pre style="width:500px;">
  define myProxy readingsProxy myDS2406:latch.A
  define myProxy readingsProxy myDS2406:latch.A
  attr myProxy valueFn {($VALUE == 1)?"on":"off"}
  attr myProxy valueFn {($VALUE == 1)?"on":"off"}
 
</pre>


=== 1-wire 8-fach switch (DS2408) mit OWSWITCH als Output (erster Kanal)===
=== 1-wire 8-fach switch (DS2408) mit OWSWITCH als Output (erster Kanal)===
<pre style="width:500px;">
   define SchalterA readingsProxy OWX:xxx
   define SchalterA readingsProxy OWX:xxx
   attr SchalterA setFn {($CMD eq "on")?"output A off":"output A on"}
   attr SchalterA setFn {($CMD eq "on")?"output A off":"output A on"}
Zeile 29: Zeile 30:
   attr SchalterA valueFn {($VALUE == 0)?"off":"on"}
   attr SchalterA valueFn {($VALUE == 0)?"off":"on"}
   attr SchalterA webCmd on:off
   attr SchalterA webCmd on:off
 
</pre>


=== on/off vertauschen ===
=== on/off vertauschen ===
<pre style="width:500px;">
  define proxy readingsProxy meineLampe:state
  define proxy readingsProxy meineLampe:state
  attr proxy setFn {($CMD eq "on")?"off":"on"}
  attr proxy setFn {($CMD eq "on")?"off":"on"}
  attr proxy valueFn {($VALUE eq "on")?"off":"on"}
  attr proxy valueFn {($VALUE eq "on")?"off":"on"}
 
</pre>


=== EnOcean Serienschalter ===
=== EnOcean Serienschalter ===
Siehe auch [[EnOcean_Starter_Guide#Aufteilung_der_Kan.C3.A4le_in_unabh.C3.A4ngige_Devices| EnOcean Starter Guide]]
Siehe auch [[EnOcean Starter Guide#Aufteilung der Kanäle in unabhängige Devices|EnOcean Starter Guide]]
<pre style="width:500px;">
  #Kanal A zur Steuerung mit on und off
  #Kanal A zur Steuerung mit on und off
  define Schalter_channelA readingsProxy Schalter:state
  define Schalter_channelA readingsProxy Schalter:state
Zeile 52: Zeile 55:
  attr Schalter_channelB valueFn {$LASTCMD}
  attr Schalter_channelB valueFn {$LASTCMD}
  attr Schalter_channelB webCmd on:off
  attr Schalter_channelB webCmd on:off
 
</pre>


=== setExtensions für Geräte implementieren ===
=== setExtensions für Geräte implementieren ===
Wenn ein (Original-)Device von sich aus die [http://fhem.de/commandref.html#setExtensions setExtentions] nicht unterstützt, kann das durch Verwendung eines proxy-Device behoben/implentiert werden. Sobald ein proxy Device on und off bereitstellt, stehen über die setExtensions auch on-for-timer, on-till, blink, usw. zur Verfügung.  
Wenn ein (Original-)Device von sich aus die [http://fhem.de/commandref.html#setExtensions 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.  


<pre style="width:500px;">
  define STECKD_TEST readingsProxy STECKD_BAUHS  state
  define STECKD_TEST readingsProxy STECKD_BAUHS  state
  attr STECKD_TEST setFn {($CMD eq "on")?"angle 3874":"angle 3873";}
  attr STECKD_TEST setFn {($CMD eq "on")?"angle 3874":"angle 3873";}
  attr STECKD_TEST setList on off
  attr STECKD_TEST setList on off
  attr STECKD_TEST valueFn {$LASTCMD}
  attr STECKD_TEST valueFn {$LASTCMD}
</pre>


Beispiel aus diesem {{Link2Forum|Topic=22753|LinkText=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)
Beispiel aus diesem {{Link2Forum|Topic=22753|LinkText=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)

Version vom 10. Juni 2015, 09:53 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!


Das Fhem-Hilfsmodul readingsProxy bietet die Möglichkeit, ein Reading oder einen Teil eines Readings eines Devices als eigenständiges Device (im Folgenden auch als Proxy Device bezeichnet) zu verwenden. Hiermit können z.B. Mehrfachsensoren und Aktoren (1-wire 2- oder 8-fach Schalter, EnOcean Serienschalter, ...) in einzeln bedienbare Geräte aufgeteilt werden.

Sobald das Proxy Device on und off bereitstellt, stehen über die setExtentions auch on-for-timer, on-till, blink, usw. zur Verfügung.

Hier soll eine Sammlung von Beispielen zur Verwendung des readingsProxy mit (sofern im jeweiligen Fall sinnvoll) den zugehörigen Screenshots entstehen.

Beispiele

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)