HomeMatic Geräte können direkt oder über eine Hausautomatistionszentrale (z.B. fhem) angebunden (pairen) werden.
Letzteres bietet verschiedene/komplexere Verwendung mit mehr als einem gepairten Gerät (z.B. Heizungsventilsteuerung).
Grundsätzlich ist es bei HomeMatic so, dass man einzelne HomeMatic-Geräte an eine Zentrale, z.B. eine „CCU2“, Pairen sollte.
Dies erleichtert die Konfiguration verschiedener Geräte.
Fhem kann eine solche Zentrale emulieren. Man spricht hier von einer „VCCU“
Die virtuelle Zentrale ist in wenigen Schritten eingerichtet.
Wenn man bereits vorhandene IO-Geräte (CUL,CUN,HMLAN,…) hat und diese bereits eine „hmId“ besitzen, so sollte man diese ID auch in der VCCU verwenden.
Würde man eine andere ID verwenden, müsste man alle vorhandenen HomeMatic-Geräte erneut mit der neuen hmId an die VCCU pairen.
define <NAME> CUL_HM <HM_ID> attr <NAME> model CCU-FHEM attr <NAME> subType virtual attr <NAME> webCmd virtual:update
Dieser Zentrale müssen noch die vorhandenen IO-Geräte zugewiesen werden.
attr <NAME> IOList cun01
Nach der Einrichtung sollten einzelne HomeMatic-Geräte vorzugsweise mit der VCCU und nicht mit einem IO-Gerät gepaired werden.
Weiterhin kann man bei mehreren IO-Geräten, durch Gruppieren von IO-Geräten eine Ausfallredundanz schaffen.
Ein weiterer Vorteil bei mehreren IO-Geräten ist, dass so die Verteilung der Funknachrichten erfolgen kann.
Bei vielen HomeMatic-Geräten kann somit die 1%-Regel (siehe: homematic) gemindert werden.
Wenn mehrere IO-Geräte vorhanden sind und diese an einer VCCU zugewiesen sind, erfolgt die Verteilung der IO-Zuweisung an einem HomeMatic-Gerät über die VCCU automatisch.
Zuweisen einer IO-Gruppe kann man wie folgt.
attr <HM_DEVICE> IOgrp <VCCU>[:<PREFERRED_IO_DEVICE>]
HMinfo ist ein Modul welches Informationen über alle HomeMatic Geräte ausgibt.
Einrichten kann man das Modul mit dem folgenden Befehl:
define <NAME> HMinfo
get hm peerCheck
get hm regCheck
get hm configCheck
get hm rssi [<filter>]
get hm protoEvents [<filter>][short|long]
Gerätekanäle können auf folgende Weise verknüpft (peered) werden.
set <SENSOR_CHANNEL> peerChan 0 <ACTOR_CHANNEL> [single|dual] [set|unset]
zum Auflösen eines Peers kann folgendes angewand werden.
set <SENSOR_CHANNEL> peerBulk <peerID> unset
Zuerst folgende abhängige Pakete installieren.
apt-get install -y librpc-xml-perl
Danach in der CCU folgende Punkte einstellen:
Nun das I/O device für die CCU erstellen und definieren, dass der externet RPC-Server verwendet werden soll.
define <NAME> HMCCU <IP_DER_CCU>
Hier unbedingt nur die in der CCU verwendeten Schnittstellen angeben.
Diese sind in der CCU-Datei /etc/config/InterfacesList.xml
definiert.
Ausführliche Informationen zu den Schnittstellen, welche im HMCCU I/O-Device verfügbar sind, sieht man mit folgendem Befehl (sonst steht in den Internals unter „ccuinterfaces“ nur die jew. Schnittstelle).
set <NAME> hmscript !GetInterfaceList dump
Wenn unter den Internals unter „STATE“ die Info: „inactive/OK“ steht, können nun die Schnittstellen gesetzt werden.
attr <NAME> rpcinterfaces [BidCos-RF,CUxD,HmIP-RF,VirtualDevices]
Externen RPC-Server einstellen und starten.
attr <NAME> ccuflags procrpc set <NAME> rpcserver on
Der RPC-Server erstellt nun Schnittstellen für die Devices der CCU.
Wenn der RPC-Server den Status „running/OK“ erhält, kann man diesen, mit folgendem Attribut, automatisch starten lassen, wenn fhem neugestartet wird.
attr <NAME> rpcserver on
Der RPC-Server muss immer dann neugestartet werden, wenn auch die CCU neugestartet wird, daher legt man sich Buttons zum stoppen und starten an.
attr <NAME> cmdIcon on:general_an off:general_aus attr <NAME> eventMap /rpcserver on:on/rpcserver off:off/
Jetzt können die Geräte von der CCU importiert und in den Raum „Homematic“ importiert werden.
get <NAME> devicelist create .* t=dev f=HM_%n defattr save room=Homematic
Parameter:
Es gibt zwei verschiedene Fensterkontaktgeräte; magnetische und optische Erfassung.
set vccu1 hmPairForSec 30
Nach erfolgreicher Anlernphase, das Gerät in fhem suchen und aufrufen.
Hier sollte bei den Readings PairedTo
und R-pairCentral
die eigene hmID stehen.
Wenn hier noch ein „set“ vor der hmID steht, ist der Pairingvorgang nocht nicht abgeschlossen.
Ggf. hilft hier ein getConfig
, da fhem evtl. die entgültige Pairinginfo noch nicht erhalten hat.
Dafür geht man wieder wie folgt vor:
set <FENSTER_GERÄT> getConfig
Das Pairing ist erst abgeschlossen wenn in den o.g. Readings die eigene hmID ohne ein „set“ steht.
Manchmal sind die Fensterkontakte sehr stur und lassen sich nur nach zig Versuchen richtig Pairen.
Am Besten ist es den Fensterkontakt zuerst Pairen und danach am Fenster ankleben.
Wenn das Pairing fehlgeschlagen ist dann einfach diese Prozedur durchführen bis es richtig ist.
Nun sind alle Einträge gelöscht und das Pairing ist gelöst.
Unter Readings kann der alte Eintrag „R-pairCentral 0x000000“ noch stehen. Das ist nicht weiter schlimm.
Danach nocheinmal alles löschen
Zuletzt das Pairing erneut durchführen.
Zum Anlernen des Fensterkontaktes an ein anderes Gerät oder eine Zentrale drückt man einmal kurz den Anlernknopf an der Front. Die LED blinkt dann orange.
Wenn der Vorgang erfolgreich war, blinkt die LED grün.
<html><style>#dot {width: 10px; float:left; margin-right: 3px; height: 10px; border-radius: 5px}</style>
<table> <tr> <th>Leuchtdauer</th><th>Farben</th><th>Beschreibung</th> </tr> <tr> <td><strong>jew. 1/2 sek.</strong></td> <td><div id="dot" style="background-color: red"></div> <div id="dot" style="background-color: green"></div> <div id="dot" style="background-color: darkorange"></div></td> <td>Selbsttest nach einlegen der Batterien</td> </tr> <tr> <td><strong>5x kurz</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>Batterie ist leer</td> </tr> <tr> <td><strong>dauer</strong></td> <td><div id="dot" style="background-color: darkorange"></div></td> <td>Funkübertragung läuft</td> </tr> <tr> <td><strong>dauer</strong></td> <td><div id="dot" style="background-color: green"></div></td> <td>alle Aktoren haben den (letzten) Befehl bestätigt</td> </tr> <tr> <td><strong>dauer</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>mind. ein Aktor hat den (letzten) Befehl nicht bestätigt</td> </tr> <tr> <td><strong>langsam</strong></td> <td><div id="dot" style="background-color: darkorange"></div></td> <td>Sensor im Anlernmodus (wartet auf Funkpartner oder Parametrierung)</td> </tr> <tr> <td><strong>schnell</strong></td> <td><div id="dot" style="background-color: darkorange"></div></td> <td>Anlernvorgang läuft</td> </tr> <tr> <td><strong>lang</strong></td> <td><div id="dot" style="background-color: green"></div></td> <td>Anlernen erfolgreich</td> </tr> <tr> <td><strong>lang</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>Anlernen fehlgeschlagen</td> </tr> <tr> <td><strong>einmal lang</br>zweimal kurz</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>Gerät ist defekt</td> </tr> <tr> <td><strong>einmal lang</br>einmal kurz</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>Duty Cycle überschritten</td> </tr> <tr> <td><strong>langsam</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>vorstufe zum Rücksetzen in Werkseinstellungen</br>(wartet auf langen Tastendruck der Anlerntaste zum Zurücksetzen</br>oder kurzen Tastendruck zum Beenden)</td> </tr> <tr> <td><strong>schnell</strong></td> <td><div id="dot" style="background-color: red"></div></td> <td>Sensor wird in den Auslieferungszustand zurückgesetzt</td> </tr> </table>
</html>
Zuerst definierte man ein DOIF.
define <NAME> DOIF (<BEDINGUNG>) (<BEFEHLE>)
Danach kann man die DEF bearbeiten und z.B. folgenden Code einbinden, um das Heizungsventil zu schlissen.
([<FENSTER_GERÄT>] eq "open") ({ fhem("set <HEIZUNG_GERÄT>_Clima ...") ... })
attr <DEVICE> devStateIcon open:fts_door_open@red closed:fts_door@green
hmPairForSec
gepaired werden) set <VCCU_NAME> hmPairForSec 30
Dann Anlern-Taste am jeweiligen Gerät drücken (Fenster geschlossen).
Pairing verifizieren über Readings des jew. Gerätes: R_pairCentral
muss die hmId
anzeigen.
Zusätzlich sollte man die Geräte (nicht den Gerätekanal) an die VCCU IO-Gruppe binden
attr <HM_SEC_SCo_NAME> IOgrp vccu1 attr <HM-CC_RT_DN_NAME> IOgrp vccu1
set <HM_SEC_SCo_NAME> peerChan 0 <HM-CC_RT_DN_NAME>_WindowRec single set
Dann die Anlern-Taste am geschlossenen Fenstersensor drücken.
PeerNeedsBurst
im Fensterkontakt eingeschaltet werden und die AES-Kommunikation für den <HM-CC_RT_DN>_WindowRec abgeschaltet werden (auch hier erst warten bis alle CMDs abgearbeitet wurden). set <HM_SEC_SCo_NAME> regSet peerNeedsBurst on <HM-CC_RT_DN_NAME>_WindowRec set <HM_SEC_SCo_NAME> regSet expectAES off <HM-CC_RT_DN_NAME>_WindowRec
Dann die Anlern-Taste am geschlossenen Fenstersensor drücken. Die LED am Fenstersensor sollte danach am Ende grün leuchten.
peerIDs
an beiden Geräten (<HM_SEC_SCo> und <HM-CC_RT_DN>_WindowRec) prüfen. set <HM-CC-RT-DN_NAME>_WindowRec regSet winOpnTemp <TEMP> <HM_SEC_SCo_NAME>
Eigene „Fenster-auf“ Erkennung abschalten
set <HM-CC-RT-DN_NAME>_Clima regSet winOpnMode off
winOpnMode
, winOpnTemp
, winOpnPeriod
u.a. angezeigt werden, muss man am <HM-CC-RT-DN> das Attribut expert
auf 3_allReg+raw
setzen
Man kann eine Temperatur für einen bestimmten Zeitraum unabhängig vom eigentlichen Wochenplan setzen.
Nach Ende des Zeitraumes geht das Termostat wieder in den geplanten Modus über.
Dieser Befehl setzt diesen Modus:
set <HM-CC-RT-DN>_Clima controlParty <TEMPERATUR> <START_DATUM> <START_ZEIT> <ENDE_DATUM> <ENDE_ZEIT>
Mit folgendem Script (in neue Datei, z.B. 99_myHeizungUrlaubUtils.pm eintragen) können mehrere Heizungsventile gesteuert werden.
Quelle: http://www.fhemwiki.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat
my $Urlaub; sub Urlaub($$$$$) { my ($temp, $startDate, $startTime, $endDate, $endTime) = @_; # HM-CC-RT-DN akzeptiert nur Zeiten, die auf Minute 00 oder 30 enden. # Daher $startTime und $endTime abrunden $startTime =~ s/\:[0-2].$/:00/; $startTime =~ s/\:[3-5].$/:30/; $endTime =~ s/\:[0-2].$/:00/; $endTime =~ s/\:[3-5].$/:30/; # controlParty bei jedem HM-CC-RT-DN setzen. for my $rt (qw(<HEIZUNG1> <HEIZUNG2> <HEIZUNG3>)) { fhem ("set $rt controlParty $temp $startDate $startTime $endDate $endTime"); } }
Die Funktion wird im Befehls Textfeld eingegeben, z.B. mit folgender Code-Zeile:
{Urlaub ("16", "06.12.13", "16:30", "09.12.13" ,"05:00")}
Per fhem kann die Tastensperre wie folgt gesetzt werden.
set <HM-CC-RT-DN> regSet btnLock on|off
Wenn die Tastensperre am Heizungsventil nicht aufgehoben werden soll, kann man dies auch unterbinden.
set <HM-CC-RT-DN> regSet globalBtnLock on|off
Man kann auch nur das Umschalten des Modus (Auto/Manuell/Urlaub) verhindern.
set <HM-CC-RT-DN> regSet modusBtnLock on|off
Dazu schaut man zusätzlich auf die Fehm-wiki-Seite. Diese beschreibt das Vorgehen ganz gut.
Man erstellt sich am Besten ein Konfigurationsverzeichnis für HomeMatic Geräte/das „hm“ Device und erstellt dann die
jew. Konfigurationsdateien. Nachdem ein Attribut für eine Konfigurationsdatei erstellt wurde muss man es noch speichern.
Das geht mit diesen Befehlen:
attr hm configDir <CONF_DIR> attr hm configTempFile myTemp<CONF_FILE>.cfg set hm tempListG save
Hier eine weitere Konfigurationsdatei.
attr hm configTempFile myTemp<CONF_FILE>.cfg set hm tempListG save
Nun mit verschiedenen Konfigurationsdateien.
attr hm configTempFile myTempSommerPlan,myTempWinterPlan.cfg
Die Dateien werden erstellt und automatisch mit den Werten aus dem Heizungsthermostats, welche aktuell eingestellt sind, gefüllt.
Weiterhin kann man in den Konfigurationsdateien mit Templates arbeiten (z.B. ein Template für jeden Raum).
Dazu Erstellt man wieder im „Clima“ Kanal des Heizungsreglers ein Attribut.
attr <NAME_DES_HEIZUNGSREGLERS>_Clima tempListTmpl <TEMPLATE_NAME>
Nun kann man die Dateien im Terminal editieren.
Der Eintrag entities weist auf das Template hin.
Beispiel für den Winter:
entities:Wohnzimmer,Badezimmer,Kueche R_0_tempListSat> 08:00 15.0 08:30 17.0 09:00 19.0 21:00 21.0 24:00 15.0 R_1_tempListSun> 08:00 15.0 08:30 17.0 09:00 19.0 21:00 21.0 24:00 15.0 R_2_tempListMon> 08:00 15.0 15:00 17.0 17:00 19.0 21:00 21.0 24:00 15.0 R_3_tempListTue> 08:00 15.0 15:00 17.0 17:00 19.0 21:00 21.0 24:00 15.0 R_4_tempListWed> 08:00 15.0 15:00 17.0 17:00 19.0 21:00 21.0 24:00 15.0 R_5_tempListThu> 08:00 15.0 15:00 17.0 17:00 19.0 21:00 21.0 24:00 15.0 R_6_tempListFri> 08:00 15.0 15:00 17.0 17:00 19.0 21:00 21.0 24:00 15.0
Beispiel für den Sommer:
entities:Wohnzimmer,Badezimmer,Kueche R_0_tempListSat> 24:00 0.0 R_1_tempListSun> 24:00 0.0 R_2_tempListMon> 24:00 0.0 R_3_tempListTue> 24:00 0.0 R_4_tempListWed> 24:00 0.0 R_5_tempListThu> 24:00 0.0 R_6_tempListFri> 24:00 0.0
Zum Speichern der Temperaturwerte in den Heizungsregler führt man folgenden Befehl aus.
set hm tempList restore
Möchte man die aktuell gültige Konfigurationsdatei wechseln, z.B. von Sommer auf Winter führt man folgendes aus
Beispiel (wenn die Konfigurationsdatei für den Sommer aktuell gültig ist; der an erster Stelle stehende Plan wird gültig).
attr hm configTempFile myTempWinterPlan.cfg,myTempSommerPlan.cfg set hm tempList restore
Folgende „hm“ Befehle können für Temperaturlisten abgesetzt werden:
Befehl | Beschreibung |
---|---|
set hm tempList und tempListG | sind gleiche Befehle, wobei tempListG in fhem eine Dropdownliste mit möglichen Befehlen anzeigt. |
set hm tempList save | Speichert die referenceList in das tempList file anhängend |
set hm tempList verify | vergleicht die referenceList mit dem im attribut tempListTmpl definierten Wochenplan. Abweichungen werden nur angezeigt. |
set hm tempList restore | Hier werden alle Unterschiede in das Device geschrieben. |
set hm tempList status | gibt eine Übersicht über genutzte Templates |
Im Sommer soll das Ventil ganz geöffnet werden und der Kalkschutzmechanismus eingeschaltet werden.
Dazu Drückt man auf die Auto/Manu-Taste und setzt den Heizungsregler auf Manuell,
danach dreht man das Stellrad ganz nach rechts bis im Display On erscheint.
Netzwerkeinstellungen sind standardmäßig auf DHCP gestellt.
Wenn der Drap per DHCP keine IP erhält/erhalten kann, kann diese manuell mit Netfinder (java -jar NetFinder-1.3.0.jar„) konfiguriert werden.
Bei einer festen IP-Adresse sollte die DHCP-Funktion deaktiviert werden.
Folgende Kanäle müssen verknüpft werden.
HK | WTH |
---|---|
5 | 2 |
6 | 1 |
3 | 3 |
Beschreibung der Kanäle
HK Thermostat (HmIP-eTRV-2)
Kanal | Beschreibung |
---|---|
0 | — |
1 | Verknüpfungspartner Heizungsthermostat (manuelle Bedienung, Sender) |
2 | Verknüpfungspartner Heizungsthermostat (manuelle Bedienung, Empfänger) |
3 | Verknüpfungspartner Wandthermostat (zykl. Daten, Soll- u. Ist-Temp.) |
4 | Verknüpfungspartner Tür-/Fensterkontakt |
5 | Verknüpfungspartner Wandthermostat (manuelle Bedienung, Sender) |
6 | Verknüpfungspartner Wandthermostat (manuelle Bedienung, Empfänger) |
7 | Verknüpfungspartner Taster |
Wand Thermostat (HmIP-WTH-2)
Kanal | Beschreibung |
---|---|
0 | — |
1 | Verknüpfungspartner Heizungsthermostat (manuelle Bedienung, Sender) |
2 | Verknüpfungspartner Heizungsthermostat (manuelle Bedienung, Empfänger) |
3 | Verknüpfungspartner Heizungsthermostat (zykl. Daten, Soll- u. Ist-Temp.) |
4 | Verknüpfungspartner Tür-/Fensterkontakt |
5 | Verknüpfungspartner Schaltaktor für Zweipunktregelung |
6 | Verknüpfungspartner Taster |
7 | Verknüpfungspartner Fussbodenheizung |
Einfach die Seite http://[HOSTNAME_OR_IP]/tools/devconfig.cgi?sid=[SID] aufrufen.
Quelle: http://ccu.as.home/addons/email/anleitung/