Virtueller Controller VCCU: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
(Einführung verfasst, diverse Umformulierungen und Fehlerbereinigungen. (ongoing work))
Zeile 1: Zeile 1:
HM Sensoren und Geräte werden klassisch mit einer (Funk)Schnittstelle ("IO") gepaired, diese ist über die ''hmId'' identifiziert. Nachteilig dabei ist, dass der Ausfall der Schnittstelle bewirkt, dass alle gepairten Geräte nicht mehr bedient werden können. Dies lässt sich im Gegensatz zu ungepairten Protokollen (z.b. FS20) auch nicht durch doppelte Definition mit abweichenden IO-Devices lösen, da das Pairing nur mit einer ''mhId'' erfolgen kann. Daher kann auch durch mehrere Schnittstellen / IOs keine Redundanz erreicht werden. Ähnliches gilt für eine Vergrösserung der Funkabdeckung durch mehrere Schnittstellen.  Denkbar ist noch Betrieb mehrerer Schnittstellen mti der gleichen ''hmId'', dies führt aber in der Regel zu gegenseitigen Störungen im Funkverkehr und mehrfach eintreffenden Befehlen etc.
Dieses Problem kann durch eine VCCU gelöst werden. Die VCCU tritt beim Pairing an die Stelle der Schnittstelle. Sie erhält eine eigene hmId, mit der die HM Sensoren und Geräte gepaired werden. Die Funkschnittstelle(n) werden dann von der VCCU als reine "dumme" IOs verwaltet. Dieses bietet vielfältige Möglichkeiten, z.b. die Verwendung mehrerer IOs, aus denen die VCCU die "beste" nach diversen Kritereien (z.B. RSSI) auswählt. Dadurch kann die Redundanz sowohl als auch die Funkabdeckung erhöht werden.
== Kurzbeschreibung ==
== Kurzbeschreibung ==
Ein virtueller Controller '''VCCU''' ist der Protokoll-Endpunkt der Zentrale.<br>
Ein virtueller Controller '''VCCU''' ist der Protokoll-Endpunkt der Zentrale und ersetzt dabei z.b. den [[HM-CFG-LAN LAN Konfigurations-Adapter]] einer "klassichen" Konfiguration<br>
Es können einer VCCU einzelne, oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere IO Devices (z.B. CULs) zu einem ''Pool''. Den Devices in FHEM (Aktoren, Sensoren) kann dann als IO Device die ''VCCU'' zugeordnet werden. Dies wird im weiteren als ''dynamische IOs'' bezeichnet
Es können einer VCCU einzelne, oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere IO Devices (z.B. CULs) zu einem ''Pool''. Den Devices in FHEM (Aktoren, Sensoren) kann dann als IO Device die ''VCCU'' zugeordnet werden. (Dies wird im weiteren als ''dynamische IOs'' bezeichnet).


Durch diese Gruppierung der IO Devices und dem zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges IO Device im Device Pool der VCCU ausfallen und das oder die verbliebenden IO Devices übernehmen diese Funktion (abhängig der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare IO Device zum senden/empfangen verwenden. Dies ist empfehlenswert für jeden der eine gewisse Ausfallsicherheit einzelner Komponenten erreichen möchte.
Durch diese Gruppierung der IO Devices und dem Zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges IO Device im Device Pool der VCCU ausfallen und das oder die verbliebenden IO Devices übernehmen diese Funktion (abhängig der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare IO Device zum senden/empfangen verwenden. Dies ist empfehlenswert für jeden, der eine gewisse Ausfallsicherheit einzelner Komponenten erreichen möchte.


Ein weitere Vorteil ist das durch die VCCU auch das IO Device genutzt werden kann welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere "bewegliche" Störfaktoren).
Ein weitere Vorteil ist, dass durch die VCCU auch das IO Device genutzt werden kann, welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere "bewegliche" Störfaktoren).


== Wann ist eine VCCU sinnvoll ==
== Wann ist eine VCCU sinnvoll ==
Der Einsatz einer VCCU ist '''immer''' sinnvoll und sollte auch nur bei der Nutzung eines einzelnen IO Devices in FHEM angelegt sein. Es entstehen keine Nachteile.
Der Einsatz einer VCCU ist im Grunde immer sinnvoll und sollte auch bei der Nutzung nur eines IO Devices in FHEM angelegt sein, zumindest da dies eine spätere Erweiterung erleichtert.
 
Es entstehen keine Nachteile (ausser des geringen Mehraufwandes der Erstanlage der VCCU)
 


Daher gilt die Empfehlung '''immer''' eine VCCU anzulegen.


== Mehrere VCCUs in einer Installation==
== Mehrere VCCUs in einer Installation==
FHEM erlaubt die Nutzung mehrer VCCUs parallel. Das System kann in Gruppen aufgeteilt und jeder VCCU eine Reihe von IOs zuwiesen werden.
FHEM erlaubt die Nutzung mehrer VCCUs parallel. Das System kann in Gruppen aufgeteilt und jeder VCCU eine Reihe von IOs zuwiesen werden.
Jede dieser VCCUs hätte dann eine eigene hmId und HM Sensoren und Geräte würden nur mit einer VCCU gekoppelt werden (können)
Dies ist jedoch eher eine theoretische Möglichkeit, die in der Regel gegenüber der Anlage einer einzigen VCCU keine Vorteile bietet.


Empfohlen wird die Definition '''einer einzigen''' VCCU, welcher man alle IOs für HM zuweist.
Empfohlen wird daher die Definition einer einzigen VCCU, welcher man alle IOs für HM zuweist.


== Definition ==
== Definition ==
=== HMId wählen ===
=== hmId wählen ===
Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Diese muss eindeutig in System sein. Man muss also eine noch nicht verwendete wählen. <br>
Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Bei Schnittstellen ist dies eine ''hmId''. Da die VCCU die Stelle der Schnittstellen einnimmt, muss sie auch mit einer ''hmId'' versehen werden. Dies geschieht per define analog zur Anlage einer physischen Schnittstelle (seihe weiter unten)
Eindeutig ist im Bereich CUL_HM. Eine HMId eines IO kann/sollte verwendet werden da diese keine CUL_HM Devices sind.
 
Eine VCCU gibt hmId an die ihr zugewiesenen IOs (Funkschnittstellen) weiter.  
 
Definiert man eine VCCU nachdem IOs (CUL oder HMLAN) für Homematic angelegt sind, sollte die ''hmId'' der bereits vorhandene Funkschnittstelle verwenden, hierdurch kann man sich das neupairren der HM Devices ersparen.


Eine VCCU gibt HMId an die ihr zugewiesenen IOs (Funkschnittstellen) weiter. Definiert man eine VCCU nachdem IOs (CUL oder HMLAN) für Homematic angelegt sind, sollte die HMId des IO verwendet werden.


In der Regel nimmt man die HMId des IOs, welcher später der VCCU zugeordnet werden soll.


=== Einrichten ===
=== Einrichten ===
   define vccu CUL_HM <HMId>
   define vccu CUL_HM <hmId>
   attr vccu model CCU-FHEM
   attr vccu model CCU-FHEM
   attr vccu IOList <io1>[,<io2>,...]
   attr vccu IOList <io1>[,<io2>,...]


IOList beinhaltet die Komma-getrennte Liste der IOs welche die VCCU nutzen soll/darf.
das Attribut IOList dient dazu festzulegen, welche physikalsichen Schnittstellen ("IO") von der VCCU genutzt werden, dis sind in der Regel alle HM-fähigen Schnittstellen.
IOList beinhaltet die Komma-getrennte Liste der IOs.


=== Auswirkungen auf IOs===
=== Auswirkungen auf IOs===
Sind IOs durch das Attribut IOList einer VCCU zugewiesen werden die notwendigen Attribute im IO gesetzt. Die HMId wird durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in Internals ''owner'' und ''owner_CCU'' des IO automatisch eingetragen. <br>
Sind IOs durch das Attribut IOList einer VCCU zugewiesen, werden die notwendigen Attribute im IO gesetzt. Die hmId wird durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in den Internals ''owner'' und ''owner_CCU'' des IO automatisch eingetragen. <br>


=== Best Current Practice ===
=== Best Current Practice ===
Zeile 42: Zeile 53:


== Dynamisches IO ==
== Dynamisches IO ==
Devices senden in der Regel immer über das gleiche IO device. Fällt es aus wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Weiter gibt es ''bewegliche'' Fernbedienungen welche ihre Verbindung zu einem IO verlieren, aber über ein andere IO gut empfangen könnten.
Devices senden in der Regel immer über das gleiche IO-Device. Fällt es aus wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Weiter gibt es ''bewegliche'' Fernbedienungen welche ihre Verbindung zu einem IO verlieren, aber über ein andere IO gut empfangen könnten.


FHEM stellt hierzu 2 Methoden zu Verfügung.
FHEM stellt hierzu 2 Methoden zu Verfügung.

Version vom 24. Dezember 2015, 01:24 Uhr

HM Sensoren und Geräte werden klassisch mit einer (Funk)Schnittstelle ("IO") gepaired, diese ist über die hmId identifiziert. Nachteilig dabei ist, dass der Ausfall der Schnittstelle bewirkt, dass alle gepairten Geräte nicht mehr bedient werden können. Dies lässt sich im Gegensatz zu ungepairten Protokollen (z.b. FS20) auch nicht durch doppelte Definition mit abweichenden IO-Devices lösen, da das Pairing nur mit einer mhId erfolgen kann. Daher kann auch durch mehrere Schnittstellen / IOs keine Redundanz erreicht werden. Ähnliches gilt für eine Vergrösserung der Funkabdeckung durch mehrere Schnittstellen. Denkbar ist noch Betrieb mehrerer Schnittstellen mti der gleichen hmId, dies führt aber in der Regel zu gegenseitigen Störungen im Funkverkehr und mehrfach eintreffenden Befehlen etc.

Dieses Problem kann durch eine VCCU gelöst werden. Die VCCU tritt beim Pairing an die Stelle der Schnittstelle. Sie erhält eine eigene hmId, mit der die HM Sensoren und Geräte gepaired werden. Die Funkschnittstelle(n) werden dann von der VCCU als reine "dumme" IOs verwaltet. Dieses bietet vielfältige Möglichkeiten, z.b. die Verwendung mehrerer IOs, aus denen die VCCU die "beste" nach diversen Kritereien (z.B. RSSI) auswählt. Dadurch kann die Redundanz sowohl als auch die Funkabdeckung erhöht werden.


Kurzbeschreibung

Ein virtueller Controller VCCU ist der Protokoll-Endpunkt der Zentrale und ersetzt dabei z.b. den HM-CFG-LAN LAN Konfigurations-Adapter einer "klassichen" Konfiguration
Es können einer VCCU einzelne, oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere IO Devices (z.B. CULs) zu einem Pool. Den Devices in FHEM (Aktoren, Sensoren) kann dann als IO Device die VCCU zugeordnet werden. (Dies wird im weiteren als dynamische IOs bezeichnet).

Durch diese Gruppierung der IO Devices und dem Zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges IO Device im Device Pool der VCCU ausfallen und das oder die verbliebenden IO Devices übernehmen diese Funktion (abhängig der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare IO Device zum senden/empfangen verwenden. Dies ist empfehlenswert für jeden, der eine gewisse Ausfallsicherheit einzelner Komponenten erreichen möchte.

Ein weitere Vorteil ist, dass durch die VCCU auch das IO Device genutzt werden kann, welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere "bewegliche" Störfaktoren).

Wann ist eine VCCU sinnvoll

Der Einsatz einer VCCU ist im Grunde immer sinnvoll und sollte auch bei der Nutzung nur eines IO Devices in FHEM angelegt sein, zumindest da dies eine spätere Erweiterung erleichtert.

Es entstehen keine Nachteile (ausser des geringen Mehraufwandes der Erstanlage der VCCU)


Mehrere VCCUs in einer Installation

FHEM erlaubt die Nutzung mehrer VCCUs parallel. Das System kann in Gruppen aufgeteilt und jeder VCCU eine Reihe von IOs zuwiesen werden. Jede dieser VCCUs hätte dann eine eigene hmId und HM Sensoren und Geräte würden nur mit einer VCCU gekoppelt werden (können) Dies ist jedoch eher eine theoretische Möglichkeit, die in der Regel gegenüber der Anlage einer einzigen VCCU keine Vorteile bietet.

Empfohlen wird daher die Definition einer einzigen VCCU, welcher man alle IOs für HM zuweist.

Definition

hmId wählen

Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Bei Schnittstellen ist dies eine hmId. Da die VCCU die Stelle der Schnittstellen einnimmt, muss sie auch mit einer hmId versehen werden. Dies geschieht per define analog zur Anlage einer physischen Schnittstelle (seihe weiter unten)

Eine VCCU gibt hmId an die ihr zugewiesenen IOs (Funkschnittstellen) weiter.

Definiert man eine VCCU nachdem IOs (CUL oder HMLAN) für Homematic angelegt sind, sollte die hmId der bereits vorhandene Funkschnittstelle verwenden, hierdurch kann man sich das neupairren der HM Devices ersparen.


Einrichten

 define vccu CUL_HM <hmId>
 attr vccu model CCU-FHEM
 attr vccu IOList <io1>[,<io2>,...]

das Attribut IOList dient dazu festzulegen, welche physikalsichen Schnittstellen ("IO") von der VCCU genutzt werden, dis sind in der Regel alle HM-fähigen Schnittstellen. IOList beinhaltet die Komma-getrennte Liste der IOs.

Auswirkungen auf IOs

Sind IOs durch das Attribut IOList einer VCCU zugewiesen, werden die notwendigen Attribute im IO gesetzt. Die hmId wird durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in den Internals owner und owner_CCU des IO automatisch eingetragen.

Best Current Practice

Folgenden Aktionen sind weiter im IO möglich, sollten aber in der VCCU genutzt werden.

 hmPairForSec
 hmPairSerial

Dynamisches IO

Devices senden in der Regel immer über das gleiche IO-Device. Fällt es aus wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Weiter gibt es bewegliche Fernbedienungen welche ihre Verbindung zu einem IO verlieren, aber über ein andere IO gut empfangen könnten.

FHEM stellt hierzu 2 Methoden zu Verfügung.

IO Ersatzschaltung

Bei stationären Devices - der häufigste Fall - sollte man das beste IO auswählen und als Default nutzen. Ein weiteres IO wird bei Ausfall des Ersten genutzt. Man definiert ein preferredIO.

 attr <dev> IOgrp <vccu>:<preferredIO>

Beispiel:

 attr LichtFlur IOgrp vccu:HMLAN1

FHEM sendet zum Device LichtFlur über HMLAN1 so lange dies verfügbar ist. Bei Ausfall von HMLAN1 aus der IOList des VCCU nach einem Ersatz gesucht.

HMLAN1 muss in der IOList der VCCU enthalten sein.

IO nach Empfangspegel

Bewegliche Fernbedienungen haben naturgemäß kein preferredIO. Daher wird dieser Eintrag nicht gesetzt. Es wird nun das IO mit dem aktuell besten Empfangspegel genutzt.

 attr Fernbedienung1 IOgrp vccu

Bemerkungen

Es wird empfohlen, das Attribut IOgrp in allen Devices zu setzen. Kanäle senden nicht selbständig, haben daher kein Attribut IOgrp.
Das Attribut IODev wird automatisch gesetzt, Usereinträge sind irrelevant. Es zeigt indirekt das letzte genutzte output-device.
Die besprochene Steuerung betrifft das Senden. Empfangen und verarbeitet werden Nachrichten immer von allen verfügbaren Quellen.

Setzen der IOgrp auf (fast) allen Devices mit einem einzigen Befehl

Hat man eine bestehende Fhem-Installation mit mehreren/vielen Devices, kann das Setzen der IOgrp aufwändig sein. Erleichtern kann man dies mittels des Befehls:

 attr TYPE=CUL_HM:FILTER=DEF=...... IOgrp vccu
 save

Dieser Befehl (in der Fhem-Eingabezeile eingeben und mit <Return> bestätigen).

Virtuelle Kanäle der VCCU

Eine VCCU kann bis zu 50 virtuelle Kanäle bedienen. Diese können als Sender/Sensoren oder Empfänger genutzt werden. Man kann diese Kanäle mit einem realen Kanal peeren und Aktionen triggern.

Man peert beispielsweise eine virtuellen Kanal mit einem Dimmer um das Verhalten bei Tastendruck lang und kurz festzulegen. Aus der Zentrale kann man den Tastendruck auslösen. Es können mehrere Aktoren an einen virtuellen Kanal gepeert werden und so alle Lichter der Gruppe mit einem "press" verzögerungslos schalten.

Anlegen

 set vccu virtual <AnzahlButton>

z.B.

 set vccu virtual 10

legt 10 Kanäle für die VCCU an, die Kanäle 1-10. Evtl. vorhandene Kanäle größer 10 werden gelöscht.

Kommandos

für Kommandos siehe CommandRef und

 get vccu_Btn1 cmdList

insbesondere gibt es

 set vccu_Btn1 press short
 set vccu_Btn1 press long
 set vccu_Btn1 postEvent <condition>