define CUL_HM
attr model CCU-FHEM
attr subType virtual
attr webCmd virtual:update
Dieser Zentrale müssen noch die vorhandenen IO-Geräte zugewiesen werden.
attr 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: [[]]) 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 IOgrp [:]
===== HMinfo =====
HMinfo ist ein Modul welches Informationen über alle HomeMatic Geräte ausgibt.
Einrichten kann man das Modul mit dem folgenden Befehl:
define HMinfo
==== HMinfo Befehle ====
* Peers prüfen \\ get hm peerCheck
* Register prüfen \\ get hm regCheck
* Konfiguration prüfen \\ get hm configCheck
* Übertragungswerte prüfen \\ get hm rssi []
* Infos zu Ereignissen anzeigen \\ get hm protoEvents [][short|long]
==== Peering ====
Gerätekanäle können auf folgende Weise verknüpft (peered) werden.
set peerChan 0 [single|dual] [set|unset]
zum Auflösen eines Peers kann folgendes angewand werden.
set peerBulk 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:
* Firewallkonfiguration: **Firewall-Richtlinie:** "Ports offen", **Homematic XML-RPC API:** "[Vollzugriff| eingeschränkt]", **Remote Homematic-Script API:** "[Vollzugriff| eingeschränkt]"
* Sicherheitseinstellungen: **Authentifizierung** "Authentifizierung aktiv" ausschalten
==== 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 HMCCU
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 hmscript !GetInterfaceList dump
Wenn unter den Internals unter "STATE" die Info: "inactive/OK" steht, können nun die Schnittstellen gesetzt werden.
attr rpcinterfaces [BidCos-RF,CUxD,HmIP-RF,VirtualDevices]
Externen RPC-Server einstellen und starten.
attr ccuflags procrpc
set 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 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 cmdIcon on:general_an off:general_aus
attr 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 devicelist create .* t=dev f=HM_%n defattr save room=Homematic
Parameter:
* ".*" mit dieser Angabe werden alle Geräte aus der CCU geholt. Man könnte den Parameter auch so eingrenzen "^HM-KL.*". Nun werden nur Geräte importiert, die mit "HM-KL" im Namen beginnen.
* "t=[chn|dev|all]" Channels, Geräte oder alles holen
* "f=set vccu1 hmPairForSec 30
- 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:
- Fensterkontakt öffnen und danach schließen
- Befehl \\ set getConfig
- 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.
- set Leuchtdauer | Farben | Beschreibung |
---|---|---|
jew. 1/2 sek. | Selbsttest nach einlegen der Batterien | |
5x kurz | Batterie ist leer | |
dauer | Funkübertragung läuft | |
dauer | alle Aktoren haben den (letzten) Befehl bestätigt | |
dauer | mind. ein Aktor hat den (letzten) Befehl nicht bestätigt | |
langsam | Sensor im Anlernmodus (wartet auf Funkpartner oder Parametrierung) | |
schnell | Anlernvorgang läuft | |
lang | Anlernen erfolgreich | |
lang | Anlernen fehlgeschlagen | |
einmal langzweimal kurz | Gerät ist defekt | |
einmal langeinmal kurz | Duty Cycle überschritten | |
langsam | vorstufe zum Rücksetzen in Werkseinstellungen(wartet auf langen Tastendruck der Anlerntaste zum Zurücksetzenoder kurzen Tastendruck zum Beenden) | |
schnell | Sensor wird in den Auslieferungszustand zurückgesetzt |
define DOIF () ()
Danach kann man die DEF bearbeiten und z.B. folgenden Code einbinden, um das Heizungsventil zu schlissen.
([] eq "open") ({
fhem("set _Clima ...") ...
})
==== Werkseinstellungen ====
- für mind. 5 Sek. die Anlerntaste drücken (LED blinkt langsam rot)
- zum Abbrechen einfach nochmal kurz drücken oder 15 Sek. nichts tun
- erneut für mind. 5 Sek. die Anlerntaste drücken zum Zurücksetzen (LED blinkt während des drücken schnell rot)
- Loslassen schließt den Vorgang ab
- LED bestätigt das Zurücksetzen durch 3 Sek. langes rotes leuchten
==== Statusbild ====
attr devStateIcon open:fts_door_open@red closed:fts_door@green
===== Heizungsregelventil HM-CC-RT-DN =====
==== Peeren mit Fensterkontakt ====
- 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 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 IOgrp vccu1
attr IOgrp vccu1
-Wenn beide gepaired sind (an beiden Geräten müssen alle **CMDs abgearbeitet** sein), WindowRec-Kanal des Thermostats mit dem Fenstersensor peeren \\ set peerChan 0 _WindowRec single set
**Dann die Anlern-Taste am geschlossenen Fenstersensor drücken.**
- 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 set regSet peerNeedsBurst on _WindowRec
set regSet expectAES off _WindowRec
**Dann die Anlern-Taste am geschlossenen Fenstersensor drücken.** Die LED am Fenstersensor sollte danach am Ende grün leuchten.
- Nun die ''peerIDs'' an beiden Geräten (set _WindowRec regSet winOpnTemp
**Eigene "Fenster-auf" Erkennung abschalten** \\ set _Clima regSet winOpnMode off
set _Clima controlParty
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( )) {
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 regSet btnLock on|off
Wenn die Tastensperre am Heizungsventil nicht aufgehoben werden soll, kann man dies auch unterbinden.
set regSet globalBtnLock on|off
Man kann auch nur das Umschalten des Modus (Auto/Manuell/Urlaub) verhindern.
set regSet modusBtnLock on|off
==== Temperatur Wochenplan ====
Dazu schaut man zusätzlich auf die [[http://www.fhemwiki.de/wiki/HomeMatic_HMInfo_TempList/Weekplan|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
attr hm configTempFile myTemp.cfg
set hm tempListG save
Hier eine weitere Konfigurationsdatei.
attr hm configTempFile myTemp.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 _Clima tempListTmpl
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 ====
- Batterien herausnehmen
- alle 3 Knöpfe gedrückt halten
- Batterien wieder einlegen
- 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 [[https://www.eq-3.com/service/downloads.html|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 =====
- neues Update auf CCU laden
- Update in der CCU auf einem Gerät updaten
- Gerät startet neu und sollte sich im Anlern-Modus befinden (orangene LED blinkt alle 10 sec.)
- 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/
- In einem Zentralenprogramm bei "dann" Bedingung ein Script hinzufügen und "sofort" ausführen lassen.
- Das Script kann z.B. eine Systemvariable in der CCU beschreiben.
- Im E-Mail Addon unter "Tcl" die Variable dann mit dem angegebenen Script auslesen und in eine neue Variable schreiben.
- Im E-Mail Addon unter "E-Mails" eine Vorlage auswählen und mit Text und der entsprechenden Variable füllen.
- In einem Zentralenprogramm bei "dann" Bedingung ein Script hinzufügen, welches das E-Mail Addon anweist eine E-Mail mit der angegebenen Vorlagennummer abzusenden.