====== 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 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=" Mit format kann ein Template für die FHEM Devicenamen festgelegt werden. In einem Template können folgende Platzhalter verwendet werden: %n = CCU Geräte- oder Kanalname, %d = CCU Gerätename, %a = CCU Geräte- oder Kanaladresse. * "defattr" - Sorgt dafür, dass für die neu definierten FHEM Devices einige Defaultattribute gesetzt werden, sofern für den jeweiligen Gerätetyp vorhanden. ===== Fensterkontakt HM-Sec-Sco ===== Es gibt zwei verschiedene Fensterkontaktgeräte; magnetische und optische Erfassung. ==== Pairen ==== - Fensterkontakt öffnen und danach schließen - Befehl \\ 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 clear all - set clear msgEvents - set 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 - set clear oldRegs - set clear msgEvents Zuletzt das Pairing erneut durchführen. - set vccu1 hmPairForSec 60 - Nun den AnlernKnopf drücken. - 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 ====
LeuchtdauerFarbenBeschreibung
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 lang
zweimal kurz
Gerät ist defekt
einmal lang
einmal kurz
Duty Cycle überschritten
langsam
vorstufe zum Rücksetzen in Werkseinstellungen
(wartet auf langen Tastendruck der Anlerntaste zum Zurücksetzen
oder kurzen Tastendruck zum Beenden)
schnell
Sensor wird in den Auslieferungszustand zurückgesetzt
==== Befehl wenn Fenster lange offen ==== Zuerst definierte man ein DOIF. 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 _WindowRec abgeschaltet werden (auch hier erst warten bis alle CMDs abgearbeitet wurden). \\ 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 ( und _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). - Danach noch die Temperatur für "Fenster auf" einstellen und die Temperatursturzerkennung im Thermostat abstellen. \\ **Einstellen der Temperatur bei offenem Fenster** \\ set _WindowRec regSet winOpnTemp **Eigene "Fenster-auf" Erkennung abschalten** \\ set _Clima regSet winOpnMode off Damit die Register ''winOpnMode'', ''winOpnTemp'', ''winOpnPeriod'' u.a. angezeigt werden, muss man am 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 _Clima controlParty 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( )) { 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.