Dies ist eine alte Version des Dokuments!
Der USB-Dongle hat gegenüber dem LAN-Konfigurator den Vorteil einer niedrigeren Latenz und der Möglichkeit die Firmware der Geräte flashen zu können, es soll jedoch hin und wieder Probleme mit dem raspberry pi geben (und möglicherweise beschränkt auf ältere). Außerdem ist die Positionierung im Haus u.U. nicht so flexibel wie über LAN.
Für den USB-Dongle wird eine Emulationsumgebung hmland benötigt: http://forum.fhem.de/index.php/topic,13071.msg79872.html#msg79872
apt-get install build-essential apt-get install libusb-1.0-0-dev
make
./hmland -D -p 1234 (Debug) ./hmland -d -p 1234 (Dämon)
define hmusb HMLAN 127.0.0.1:1234 attr hmusb hmId 424242
Welche Firmware läuft?
./hmland -i
Firmware updaten:
1. Herunterladen
2. Flashen
./flash-hmcfgusb hmusbif.enc
Kann mit autocreate leicht hinzugefügt werden.
set hm tempList save <filename>
Legt <filename> mit den aktuell bekannten (programmierten) Temperaturlisten an. Gut als Startpunkt der Konfiguration nutzbar.
Die Konfiguration kann folgendermaßen geprüft werden:
set hm tempList verify <filename>
set hm tempList restore <filename>
Es werden alle Temperaturlisten aus der Datei in die dafür eingerichteten Komponenten eingetragen. Dabei werden ausschließlich die Änderungen geschrieben. Liegen keine Unterschiede zwischen Dateiinhalt und aktuellen Daten vor, wird auch nichts geschrieben. Ein mehrfaches anwenden des Kommandos ist also keine Belastung des Systems.
Ich habe meine Programme zur besseren Übersicht in 3 Dateien gegliedert, wodurch allerdings die verify- und restore-commands (s.u.) umständlicher werden:
entities:EG.Wo.Clima_Clima R_0_tempListSat>08:00 17.5 20:45 21.0 24:00 17.5 R_1_tempListSun>08:00 17.5 20:30 21.0 24:00 17.5 R_2_tempListMon>15:00 17.5 20:30 21.0 24:00 17.5 R_3_tempListTue>15:00 17.5 20:30 21.0 24:00 17.5 R_4_tempListWed>15:00 17.5 20:30 21.0 24:00 17.5 R_5_tempListThu>15:00 17.5 20:30 21.0 24:00 17.5 R_6_tempListFri>15:00 17.5 20:45 21.0 24:00 17.5 entities:OG.Sc.Clima_Clima R_0_tempListSat>08:30 18.5 20:30 15.0 24:00 18.5 R_1_tempListSun>08:30 18.5 20:00 15.0 24:00 18.5 R_2_tempListMon>05:20 18.5 20:00 15.0 24:00 18.5 R_3_tempListTue>05:20 18.5 20:00 15.0 24:00 18.5 R_4_tempListWed>05:20 18.5 20:00 15.0 24:00 18.5 R_5_tempListThu>05:20 18.5 20:00 15.0 24:00 18.5 R_6_tempListFri>05:20 18.5 20:30 15.0 24:00 18.5 entities:EG.Ku.Clima_Clima R_0_tempListSat>08:00 17.5 20:00 19.0 24:00 17.5 R_1_tempListSun>08:00 17.5 20:00 19.0 24:00 17.5 R_2_tempListMon>05:00 17.5 05:45 21.0 15:00 17.5 20:00 19.0 24:00 17.5 R_3_tempListTue>05:00 17.5 05:45 21.0 15:00 17.5 20:00 19.0 24:00 17.5 R_4_tempListWed>05:00 17.5 05:45 21.0 15:00 17.5 20:00 19.0 24:00 17.5 R_5_tempListThu>05:00 17.5 05:45 21.0 15:00 17.5 20:00 19.0 24:00 17.5 R_6_tempListFri>05:00 17.5 05:45 21.0 15:00 17.5 20:00 19.0 24:00 17.5 entities:DG.Ba.Clima_Clima R_0_tempListSat>24:00 15.0 R_1_tempListSun>24:00 15.0 R_2_tempListMon>04:45 17.0 05:45 21.0 24:00 16.0 R_3_tempListTue>04:45 17.0 05:45 21.0 24:00 16.0 R_4_tempListWed>04:45 17.0 05:45 21.0 24:00 16.0 R_5_tempListThu>04:45 17.0 05:45 21.0 24:00 16.0 R_6_tempListFri>04:45 17.0 05:45 21.0 24:00 16.0
entities:EG.Wo.Clima_Clima R_0_tempListSat>08:00 17.5 20:45 21.0 24:00 17.5 R_1_tempListSun>08:00 17.5 20:45 21.0 24:00 17.5 R_2_tempListMon>08:00 17.5 20:45 21.0 24:00 17.5 R_3_tempListTue>08:00 17.5 20:45 21.0 24:00 17.5 R_4_tempListWed>08:00 17.5 20:45 21.0 24:00 17.5 R_5_tempListThu>08:00 17.5 20:45 21.0 24:00 17.5 R_6_tempListFri>08:00 17.5 20:45 21.0 24:00 17.5 entities:OG.Sc.Clima_Clima R_0_tempListSat>08:30 18.5 20:30 15.0 24:00 18.5 R_1_tempListSun>08:30 18.5 20:30 15.0 24:00 18.5 R_2_tempListMon>08:30 18.5 20:30 15.0 24:00 18.5 R_3_tempListTue>08:30 18.5 20:30 15.0 24:00 18.5 R_4_tempListWed>08:30 18.5 20:30 15.0 24:00 18.5 R_5_tempListThu>08:30 18.5 20:30 15.0 24:00 18.5 R_6_tempListFri>08:30 18.5 20:30 15.0 24:00 18.5 entities:EG.Ku.Clima_Clima R_0_tempListSat>08:00 17.5 21:00 19.0 24:00 17.5 R_1_tempListSun>08:00 17.5 21:00 19.0 24:00 17.5 R_2_tempListMon>08:00 17.5 21:00 19.0 24:00 17.5 R_3_tempListTue>08:00 17.5 21:00 19.0 24:00 17.5 R_4_tempListWed>08:00 17.5 21:00 19.0 24:00 17.5 R_5_tempListThu>08:00 17.5 21:00 19.0 24:00 17.5 R_6_tempListFri>08:00 17.5 21:00 19.0 24:00 17.5 entities:DG.Ba.Clima_Clima R_0_tempListSat>24:00 12.0 R_1_tempListSun>24:00 12.0 R_2_tempListMon>24:00 12.0 R_3_tempListTue>24:00 12.0 R_4_tempListWed>24:00 12.0 R_5_tempListThu>24:00 12.0 R_6_tempListFri>24:00 12.0
entities:EG.Wo.Clima_Clima R_0_tempListSat>24:00 17.5 R_1_tempListSun>24:00 17.5 R_2_tempListMon>24:00 17.5 R_3_tempListTue>24:00 17.5 R_4_tempListWed>24:00 17.5 R_5_tempListThu>24:00 17.5 R_6_tempListFri>24:00 17.5 entities:OG.Sc.Clima_Clima R_0_tempListSat>24:00 15.0 R_1_tempListSun>24:00 15.0 R_2_tempListMon>24:00 15.0 R_3_tempListTue>24:00 15.0 R_4_tempListWed>24:00 15.0 R_5_tempListThu>24:00 15.0 R_6_tempListFri>24:00 15.0 entities:EG.Ku.Clima_Clima R_0_tempListSat>24:00 15.0 R_1_tempListSun>24:00 15.0 R_2_tempListMon>24:00 15.0 R_3_tempListTue>24:00 15.0 R_4_tempListWed>24:00 15.0 R_5_tempListThu>24:00 15.0 R_6_tempListFri>24:00 15.0 entities:DG.Ba.Clima_Clima R_0_tempListSat>24:00 12.0 R_1_tempListSun>24:00 12.0 R_2_tempListMon>24:00 12.0 R_3_tempListTue>24:00 12.0 R_4_tempListWed>24:00 12.0 R_5_tempListThu>24:00 12.0 R_6_tempListFri>24:00 12.0
Diese Templates können dann zugewiesen werden:
attr EG.Wo.Clima.Terrasse_Clima tempListTmpl FHEM/tempList-Alltag.cfg:EG.Wo.Clima_Clima attr OG.Sc.Clima_Clima tempListTmpl FHEM/tempList-Alltag.cfg:OG.Sc.Clima_Clima
Nach dem Zuweisen wird das Template eingelesen / verifiziert:
set hm tempList verify FHEM/tempList-Alltag.cfg
set EG.Wo.Clima.Terrasse_Clima tempListTmpl verify FHEM/tempList-Alltag.cfg:EG.Wo.Clima_Clima set OG.Sc.Clima_Clima tempListTmpl verify FHEM/tempList-Alltag.cfg:OG.Sc.Clima_Clima
Mit dem restore-Kommando wird letztendlich der Thermostat geschrieben:
set hm tempList restore FHEM/tempList.cfg
set EG.Wo.Clima.Terrasse_Clima tempListTmpl restore FHEM/tempList-Alltag.cfg:EG.Wo.Clima_Clima set OG.Sc.Clima_Clima tempListTmpl restore FHEM/tempList-Alltag.cfg:Sc.Clima_Clima
Überprüfen, was gesetzt ist:
get hm param -c tempListTmpl
Will man explizit kein Temperaturprofil zuweisen sollte man tempListTmpl auf „none“ setzen.
In der fhem.cfg:
define HeizungUmschalten dummy attr HeizungUmschalten webCmd Alltag:Daheim:Weg define n_HeizungUmschalten notify HeizungUmschalten {\ if($EVENT eq "Alltag") { \ Log(3,"1. schalte Temperaturen auf $EVENT");;\ fhem "attr EG.Wo.Clima.Terrasse_Clima tempListTmpl FHEM/tempList.cfg:EG.Wo.Clima_Alltag";;\ fhem "attr OG.Sc.Clima_Clima tempListTmpl FHEM/tempList.cfg:OG.Sc.Clima_Alltag";;\ }\ elsif($EVENT eq "Daheim") { \ Log(3,"2. schalte Temperaturen auf $EVENT");;\ fhem "attr EG.Wo.Clima.Terrasse_Clima tempListTmpl FHEM/tempList.cfg:EG.Wo.Clima_Daheim";;\ fhem "attr OG.Sc.Clima_Clima tempListTmpl FHEM/tempList.cfg:OG.Sc.Clima_Daheim";;\ }\ elsif($EVENT eq "Weg") { \ Log(3,"3. schalte Temperaturen auf $EVENT");;\ fhem "attr EG.Wo.Clima.Terrasse_Clima tempListTmpl FHEM/tempList.cfg:EG.Wo.Clima_Weg";;\ fhem "attr OG.Sc.Clima_Clima tempListTmpl FHEM/tempList.cfg:OG.Sc.Clima_Weg";;\ }\ else { \ Log(3,"5. $EVENT");;\ }\ fhem "set hm tempList verify";;\ fhem "set hm tempList restore";;\ }
set <rtName_Clima> controlManu off
Dies geschieht über den Kanal Clima_Team. Dieser Kanal erlaubt es mehrere HM-CC-RT-DN zu einem „Team“ zu gruppieren. Ein Mitglied des Teams meldet
an seine „Teamkollegen“ weiter. Folgende Änderungen werden nicht weitergegeben:
<rt1-ClimaTeam> und <rt2-ClimaTeam> sind die ClimaTeam Kanäle:
set <rt1-ClimaTeam> peerChan 0 <rt2-ClimaTeam> single
Und beide in den Anlernmodus versetzen.
Können mit Thermosten (Kanal 3 - WindowRec) gepeert werden.
set EG.Wo.AD.Terrasse.Rechts peerChan 0 EG.Wo.Clima.Auffahrt_WindowRec single
Und beide in den Anlern-Modus setzen.
Bei mir wohl nicht nötig.
siehe http://www.fhemwiki.de/wiki/HM-SEC-SC_T%C3%BCr-Fensterkontakt
set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title 'Fenster und Türen' set ytics ("Zu" 0, "Auf" 1) set y2tics set grid set ylabel "Offen" set y2label "" set yrange [-0.1:1.1] #FileLog_EG.Fl.AD.Haustuer 4:EG.Fl.AD.Haustuer\s(open|closed):0:$fld[2]=~"open"?1:0 #FileLog_EG.Wo.AD.Terrasse.Rechts 4:EG.Wo.AD.Terrasse.Rechts\s(open|closed):0:$fld[2]=~"open"?1:0 #FileLog_OG.Sc.AD.Auffahrt 4:OG.Sc.AD.Auffahrt\s(open|closed):0:$fld[2]=~"open"?1:0
Soll ein Fenster z.B. auf die y-Achse einer Ventilstellung gelegt werden:
... $fld[2]=~"open"?80:0 ...
set <Fensterkontakt> regSet peerNeedsBurst on <Stelltrieb>
http://www.fhemwiki.de/wiki/HM-PB-2-WM55_2fach-Funk-Wandtaster
define vccu CUL_HM <HMId> attr vccu model CCU-FHEM
Die <HMId> ist als Atribut im verwendeten CCU hinterlegt.
attr vccu IOList <CUL> set vccu virtual 2
set <Button1 von deinem Schalter> peerChan 0 vccu_Btn1 single set set <Button2 von deinem Schalter> peerChan 0 vccu_Btn2 single set
Und am Taster die Anlernen-Taste drücken (ggfs. getConfig wiederholen.
Etwas tricky, evtl. muss ein nicht vorhandener Nullleiter aus einer benachbarten Dose gezogen werden. Evtl. muss auch die Dose nach hinten erweitert werden (brauchen ganz schön viel Platz, die Dinger…)
Achtung: Vor endgültiger Montage richtige Laufrichtung der Rollläden testen!
Hinweise für meinen Rückbau:
set <name> regSet driveUp 30.0 # Fahrtzeit nach oben [s] set <name> regSet driveDown 26.0 # Fahrtzeit nach unten [s] set <name> regSet driveTurn 0.5 # Benötigte Fahrrichtungswechselzeit [s]
Anschließend die Rolläden einmal ganz hoch oder runter fahren, dann hat er seinen Nullpunkt gefunden.
set <name> on # Schaltet den Aktor ein set <name> off # Schaltet den Aktor aus set <name> toggle # Ändert den logischen Zustand des Aktors set <name> <Prozentangabe[0 bis 100]> # Prozentuale Öffnung, berechnet aus definierter Laufzeit
Hinweis:
Standardmäßig werden hier Lampen genommen. Da es nicht besonders intuitiv ist, können auf dem Status entsprechen geschlossene Rollläden verwendet werden:
attr <Gerätename> devStateIcon on:fts_shutter_1w_0@green off:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_10 8\d.*:fts_shutter_1w_20 7\d.*:fts_shutter_1w_30 6\d.*:fts_shutter_1w_40 5\d.*:fts_shutter_1w_50 4\d.*:fts_shutter_1w_60 3\d.*:fts_shutter_1w_70 2\d.*:fts_shutter_1w_80 1\d.*:fts_shutter_1w_90 0\d.*:fts_shutter_1w_100
Standardmäßig wird ein Silder dargestellt. Wer dies nicht möchte, kann bspw. folgendes versuchen:
attr <Gerätename> webCmd stop:up:90:80:70:60:50:40:30:20:10:down
define RolladenWarten dummy define RolladenNacht dummy
# Notify, um die rechte Rollade zu öffnen, falls die Tür geöffnet wird: define n_RolladenOeffnen notify (EG.Wo.AD.Terrasse.Rechts:open) {\ if ( Value("EG.Wo.BA.TerrasseRechts") ne "on" and Value("RolladenNacht") eq "on" ) {\ fhem("set EG.Wo.BA.TerrasseRechts on;; set RolladenWarten on")\ }\ elsif ( Value("EG.Wo.BA.TerrasseRechts") ne "on" and Value("RolladenNacht") ne "on" ) {\ fhem("set EG.Wo.BA.TerrasseRechts on")\ }\ }
# 1. # Fahre morgens die Rollläden hoch, deaktiviere den Nacht-Modus und lösche ein evtl. verzögertes Herunterfahren: efine RolladenOeffnen at *{sunrise("NAUTIC",0,"06:00","07:30")} set EG.Wo.BA.Terrasse.* on;; set RolladenNacht off;; set RolladenWarten off
# 2. # Rolläden sollen um 21 Uhr heruntergefahren werden; der Nacht-Modus wird aktiviert. # Wenn die rechte Tür offen ist, soll links heruntergefahren werden und RolladenWarten angeschaltet werden define RolladenSchliessen at *{sunset("NAUTIC",0,"18:00","22:00")} { if ( Value("EG.Wo.AD.Terrasse.Rechts") eq "open" ) {\ fhem("set RolladenNacht on;; set EG.Wo.BA.TerrasseLinks off;; set RolladenWarten on")\ }\ else {\ fhem("set RolladenNacht on;; set EG.Wo.BA.Terrasse.* off")\ }\ }
# 3. # Wenn die rechte Rollade verzögert gefahren werden muss, ist RolladenWarten eq "on" (und es ist Nacht - notify) # 5 Minuten nach dem Schließen der Tür, fährt die Rollade runter (falls die Tür dann immer noch geschlossen ist) # Falls die Tür dann doch wieder offen ist, wird nichts gemacht (und es beginnt von vorne) define di_RolladenWarten DOIF ([EG.Wo.AD.Terrasse.Rechts] eq "closed" and [RolladenWarten] eq "on") (set EG.Wo.BA.TerrasseRechts 30, set RolladenWarten off) attr di_RolladenWarten do always attr di_RolladenWarten wait 300
Man beachte das Komma bei mehreren auszuführenden Befehlen!
Hat man nur einen SD, sollte man ihn mit sich selbst peeren und damit ein Team erstellen:
set EG.Wo.SD peerChan 0 EG.Wo.SD single set actor.
set EurerTeamleader alarmOn set EurerTeamleader alarmOff set EurerTeamleader teamCall
http://www.fhemwiki.de/wiki/HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP
Peeren des Temperatursensors:
set EG.Wo.Clima_Weather peerChan 0 EG.Wo.Clima.Terrasse_Weather single set set EG.Wo.Clima_Weather peerChan 0 EG.Wo.Clima.Auffahrt_Weather single set
Und die Stelltriebe in den Anlernmodus versetzen.
Zum Einstellen der Solltemperatur:
set EG.Wo.Clima_Climate peerChan 0 EG.Wo.Clima.Terrasse_Climate single set set EG.Wo.Clima_Climate peerChan 0 EG.Wo.Clima.Auffahrt_Climate single set
Analog zum Thermostaten!
Zum Plotten muss evtl. noch ein LogFile für den Weather-Channel angelegt werden
define FileLog_EG.Wo.Clima FileLog ./log/EG.Wo.Clima-%Y.log EG.Wo.Clima attr FileLog_EG.Wo.Clima logtype text attr FileLog_EG.Wo.Clima room CUL_HM define FileLog_EG.Wo.Clima_Weather FileLog ./log/EG.Wo.Clima_Weather-%Y.log EG.Wo.Clima_Weather attr FileLog_EG.Wo.Clima_Weather logtype plotWandthermostat:Plot,text attr FileLog_EG.Wo.Clima_Weather room CUL_HM
http://www.fhemwiki.de/wiki/HomeMatic_HMInfo
Das Modul HMInfo wird aktiviert / angelegt mit
define hm HMinfo
„hm“ ist dabei ein Name der Wahl. Anschließend können seine Funktionen mit
get hm help
aufgelistet werden.
get hm peerCheck
get hm regCheck
get hm configCheck
Kombiniert beide obigen Befehle
Mittels
set hm protoEvents short
erhält man eine Tabelle mit Informationen über
Der Zähler ist fortlaufend und lääst sich mittels
set <device> clear msgEvents
bzw. f