Inhaltsverzeichnis

HomeMatic

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).

Virtuelle Zentrale

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

HMinfo ist ein Modul welches Informationen über alle HomeMatic Geräte ausgibt.
Einrichten kann man das Modul mit dem folgenden Befehl:

define <NAME> HMinfo

HMinfo Befehle

Peering

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

Verbinden mit Raspberrymatic

Quelle: https://wiki.fhem.de/wiki/HMCCU und https://wiki.fhem.de/wiki/HMCCU_Best_Practice

Vorbereitungen

Zuerst folgende abhängige Pakete installieren.

apt-get install -y librpc-xml-perl

Danach in der CCU folgende Punkte einstellen:

I/O Device erstellen und konfigurieren

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:

Fensterkontakt HM-Sec-Sco

Es gibt zwei verschiedene Fensterkontaktgeräte; magnetische und optische Erfassung.

Pairen

  1. Fensterkontakt öffnen und danach schließen
  2. Befehl
    set vccu1 hmPairForSec 30
  3. Anlernknopf am Fensterkontakt drücken

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:

  1. Fensterkontakt öffnen und danach schließen
  2. Befehl
    set <FENSTER_GERÄT> getConfig
  3. Anlernknopf am Fensterkontakt drücken

Das Pairing ist erst abgeschlossen wenn in den o.g. Readings die eigene hmID ohne ein „set“ steht.

Pairing fehlgeschlagen

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.

  1. set <FENSTER_GERÄT> clear all
  2. set <FENSTER_GERÄT> clear msgEvents
  3. set <FENSTER_GERÄT> unpair

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

  1. set <FENSTER_GERÄT> clear oldRegs
  2. set <FENSTER_GERÄT> clear msgEvents

Zuletzt das Pairing erneut durchführen.

  1. set vccu1 hmPairForSec 60
  2. Nun den AnlernKnopf drücken.
  3. Ggf. den Anlernknopf, nur wenn er nicht leuchtet, erneut drücken bis die Befehle abgearbeitet werden.

Anlernen

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.

LED Stati

<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>

Befehl wenn Fenster lange offen

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 ...") ... 
})

Werkseinstellungen

  1. für mind. 5 Sek. die Anlerntaste drücken (LED blinkt langsam rot)
    1. zum Abbrechen einfach nochmal kurz drücken oder 15 Sek. nichts tun
  2. erneut für mind. 5 Sek. die Anlerntaste drücken zum Zurücksetzen (LED blinkt während des drücken schnell rot)
  3. Loslassen schließt den Vorgang ab
  4. LED bestätigt das Zurücksetzen durch 3 Sek. langes rotes leuchten

Statusbild

attr <DEVICE> devStateIcon open:fts_door_open@red closed:fts_door@green

Heizungsregelventil HM-CC-RT-DN

Peeren mit Fensterkontakt

  1. Beide Geräte (HM-CC-RT-DN und HM-Sec-SCo) mit FHEM über die VCCU pairen (es kann nur ein Gerät gleichzeitig per 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
  2. Wenn beide gepaired sind (an beiden Geräten müssen alle CMDs abgearbeitet sein), WindowRec-Kanal des Thermostats mit dem Fenstersensor peeren
    set <HM_SEC_SCo_NAME> peerChan 0 <HM-CC_RT_DN_NAME>_WindowRec single set

    Dann die Anlern-Taste am geschlossenen Fenstersensor drücken.

  3. Damit das Thermostat bei offenem Fenster auch tatsächlich was macht, muss noch 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.

  4. Nun die peerIDs an beiden Geräten (<HM_SEC_SCo> und <HM-CC_RT_DN>_WindowRec) prüfen.
    Weiterhin müssen auch die Registerlisten für die jew. Geräte vorhanden und ausgelesen sein (diese sollten auftauchen wenn alle CMDs abgearbeitet wurden).
  5. Danach noch die Temperatur für „Fenster auf“ einstellen und die Temperatursturzerkennung im Thermostat abstellen.
    Einstellen der Temperatur bei offenem Fenster
    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
Damit die Register winOpnMode, winOpnTemp, winOpnPeriod u.a. angezeigt werden, muss man am <HM-CC-RT-DN> das Attribut expert auf 3_allReg+raw setzen

Party- / Urlaubsmodus

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>
Den Befehl auf Kanal 4 (_Clima) eingeben.
Man kann nur Zeiten zur vollen und halben Stunde eingeben.

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")}

Tastensperre

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

Temperatur Wochenplan

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

Sommermodus

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.

Werkseinstellungen

  1. Batterien herausnehmen
  2. alle 3 Knöpfe gedrückt halten
  3. Batterien wieder einlegen
  4. wenn im Disples „rES“ erscheint, die Knöpfe loslassen

HMipW-Drap

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.

HMIP/W Geräte-Updates installieren

  1. neues Update auf CCU laden
  2. Update in der CCU auf einem Gerät updaten
  3. Gerät startet neu und sollte sich im Anlern-Modus befinden (orangene LED blinkt alle 10 sec.)
  4. Gerät in CCU neu anlernen (da Geräte und CCU nicht mit dem Internet verbunden sind, erfolgt das nicht automatisch)

Verknüpfung Heizkörperthermostat und Wandthermostat

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

Funk Signalstärke

Einfach die Seite http://[HOSTNAME_OR_IP]/tools/devconfig.cgi?sid=[SID] aufrufen.

CCU Addon E-Mail

Quelle: http://ccu.as.home/addons/email/anleitung/

  1. In einem Zentralenprogramm bei „dann“ Bedingung ein Script hinzufügen und „sofort“ ausführen lassen.
  2. Das Script kann z.B. eine Systemvariable in der CCU beschreiben.
  3. Im E-Mail Addon unter „Tcl“ die Variable dann mit dem angegebenen Script auslesen und in eine neue Variable schreiben.
  4. Im E-Mail Addon unter „E-Mails“ eine Vorlage auswählen und mit Text und der entsprechenden Variable füllen.
  5. In einem Zentralenprogramm bei „dann“ Bedingung ein Script hinzufügen, welches das E-Mail Addon anweist eine E-Mail mit der angegebenen Vorlagennummer abzusenden.