Nachdem ich den Großteil der Wohnung mit HomeMatic Unterputz Schaltaktoren ausgestattet habe (HM-LC-Sw1PBU-F, HM-LC-SW1-FM, HM-PBI-4-FM) kann man nun die Lampen im Wohnzimmer, Flur, Esszimmer, Bad und HomeOffice über IP Symcon steuern.
1. HomeMatic Schalter-Übersicht
Ohne viel Erfahrung im elektrotechnischen Bereich, habe ich mich an den Elektriker meines Vertrauens gewandt, um mir ein paar Anleitungen und Basics zu besorgen mit denen ich die folgenden Komponenten installieren konnte:
- HomeMatic 103029 Funk-Schaltaktor für Markenschalter, 1fach: HM-LC-Sw1PBU-FM
- HomeMatic 076793 Unterputzschalter, 1fach: HM-LC-SW1-FM
- HomeMatic 076784 Funk-Tasterschnittstelle 4fach: HM-PBI-4-FM
Die Funk-Tasterschnittstelle habe ich verwendet, um 2 Wechselschaltungen zu realisieren und zusätzlich eine Halogenlampe im HomeOffice zu steuern. Diese wurde im Flur installiert und wird getriggert über einen 2fach und 1fach Schalter. Die eine Wechselschaltung wird im Flur direkt verwendet, sodass man an 2 verschiedenen Schaltern das Flurlicht schalten kann. Die andere Wechselschaltung schaltet das Licht auf der Treppe zum HomeOffice, welches man aus dem Flur unten und aus dem HomeOffice selbst schalten kann.
Den Unterputzschalter habe ich verwendet für die Halogenlampe im HomeOffice. Hier brauchte die Halogenlampe mehr Ampere als der HM-LC-Sw1PBU-FM unterstützte. Eigentlich wollte ich einen Schalter direkt daran anschließen. Leider war in der Dose nicht genug Platz, sodass ich einen HomeMatic 2fach-Funk-Wandsender HM-PB-2-WM55 verwendet habe, der viel flacher ist.
Hier ein paar Eindrücke…wenn mal Zeit ist oder Interesse besteht, kann ich auch noch Details zur Verkabelung geben.
Als Schalter(aufsätze) und Rahmen habe ich Gira 55 hochglänzend verwendet.
2. Ansteuerung über IP Symcon
Kommen wir nun zum eigentlichen Teil dieses Posts. Nach der Installation der HomeMatic Hardware und dem Anlernen an die CCU, kann man diese auf üblichem Weg über die HomeMatic Configurator Instanz in IP Symcon bekannt machen. Ich habe die Geräteinstanzen so benannt, dass man am Namen erkennen kann, dass diese zum Schalten von Lampen dienen. Das ist wichtig für den weiteren Verlauf dieses Posts. Für das Esszimmer sieht es etwa so aus:
Fügt man so nach und nach alle Instanzen hinzu, kann man je nach Struktur über die Räume das Licht steuern, oder man fügt wie in diesem Fall eine Kategorie “Licht Switches” hinzu und verlinkt die Instanzen, sodass man alle Schalter, die Lampen schalten im WebFront auf einen Blick sieht.
Diese Verlinkungen sehen im WebFront wie folgt aus:
Man kann nun also jedes Licht einzeln ein- und ausschalten. Im Screenshot oben sieht man auch die Steuerung der Philips Hue Lights, die sich natürlich über einen anderen Mechanismus als die HomeMatic Komponenten schalten lassen.
Mein Ziel im ersten Schritt war es, alle Lampen auf einmal ausschalten zu können, um dann in einem weiteren Schritt über Anwesenheitserkennung alle Lampen auszuschalten, wenn niemand in der Wohnung ist (oder z.B. wenn die Fitnesstracker bei meiner Freundin und mir erkannt haben, dass wir schlafen?).
Die Logik dafür ist recht einfach. Man muss nur einen Indikator dafür finden/definieren, an dem man erkennt, dass eine Instanz ein Lichtschalter ist. In meinem Fall habe ich in den Instanznamen entweder “Licht” oder “Lampe” stehen. Dann kann man einfach durch die IP Symcon Objekte iterieren und prüfen, ob der ObjectName String “Licht” oder “Lampe” enthält, sowie Objekte ausschließt, die “Maintenance” im Namen haben, da diese nicht beachtet werden. Die gefundenen Objekte, die diese Kriterien erfüllen, werden in ein Array geschrieben. Dabei werden nur Instanzen in Betracht gezogen, um die erstellte Variable “Alle Lichter” auszuschließen (siehe unten).
In einem weiteren Schritt kann man dann für alle Array Member den Befehl “HM_WriteValueBoolean” ausführen und die jeweiligen Schalter auf “True” bzw “False” setzen.
Momentan steuere ich das noch manuell über das WebFront, sodass die boolean Werte über einen Switch des WebFronts gesendet werden. Das gesamte Script sieht so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
if($_IPS['SENDER'] == "WebFront") { $allLights = GetAllHomematicLights(); SetHomematicLights($allLights, $_IPS['VALUE']); } function GetAllHomematicLights() { $allObjects = IPS_GetObjectList(); $allLights = array(); foreach($allObjects as $key => $value) { // take only instances and not variables to exclude "Alle Lichter" Switch if(IPS_InstanceExists($value)) { $currentObject = IPS_GetObject($value); $currentObjectName = $currentObject["ObjectName"]; $objectIsLight = strpos($currentObjectName,"Licht"); $objectIsLamp = strpos($currentObjectName,"Lampe"); $objectIsLightMaintenance = strpos($currentObjectName,"MAINTENANCE"); if(($objectIsLight || $objectIsLamp) && !$objectIsLightMaintenance) { $allLights[$currentObjectName] = $value; } } } return $allLights; } function SetHomematicLights($lightArray, $desiredState) { foreach($lightArray as $key => $value) { //print($key.": ".$value."\n"); HM_WriteValueBoolean($value, "STATE", $desiredState); } } |
Um den Schalter im WebFront zu sehen, fügt man eine Variable hinzu, weist dieser dem ~Switch Profil hinzu und gibt als Aktion das oben genannte Script an.
So…als nächstes beschäftige ich mich mit der Anwesenheitserkennung, was definitiv etwas herausfordernder ist.
No Comment
You can post first response comment.