HomeMatic Fenster-Drehgriffkontakt Community-Nachbau
Der HB-Sec-RHS Funk-Fenster-Drehgriffkontakt ist ein selbstbau threeStateSensor zur Überwachung eines Fenster-Drehgriffs.
Die Firmware ist identisch mit dem Originalen Sensor von ELV und verhält sich dem entsprechend auch gleich.
Übersicht
Grundidee zu diesem Sensor wurde durch Kawaci im Forum geliefert. Die Umsetzung besteht aus einer Atmega328p Platine mit CC1101 Funkmodul (868 MHz) sowie einer auf der AskSin++ Portierung des Homematik Protokolls. Das Platinenlayout des Sensors teilt sich auf zwei Platinen auf. Der eigentliche Sender, welcher Arduino-Kompatibel ist, sowie der Sensorplatine zur Erfassung der Fenstergriffstellung.
Anfangs gab es zwei Ideen wie der Sensor aussehen sollte. Inzwischen hat sich die HomeMatic Variante mit CR032 Batteriehalterung auf der Platine durchgesetzt. Somit wird hier nicht näher auf andere Versionen eingegangen.
Platine
...TEXT...
... Bilder von Schaltplan und Platine...
Bauteilliste
...Tabelle mit Bauteilen und bestmöglich direkten Links...
Firmware
Bootloader
Die Sensorfirmware kann OTA (Over The Air) oder über den Arduino Bootloader geladen werden.
Erstellen des Bootloaders
Dafür wird, mit Hilfe der makeota.html der Bootloader mit den benötigten Daten gefüllt und anschließend generiert.
Die makeota.html muss dazu in einem Browser deiner Wahl aufgerufen werden.
Die Felder HM ID, HM-Serial und der config String innerhalb der makeota.html können sich jeweils frei ausgedacht werden (dabei die vorgaben beachten, Bsp. HM ID: 6 hex zeichen). Das Feld Device Type muss folgende Nummer beinhalten: "0030"
Die drei o.g. Felder sollten keinen Falls anschließend auf zwei Geräten identisch sein. Somit ist es sinnvoll sich die eingegebenen Daten auf zu schreiben oder Screenshots zu machen.
Nun muss noch dem Bootloader noch bekannt gemacht werden, welche Batterien du mit deinem FDGK nutzt. Dies wählst du über die dropdown Liste "Power Presets" aus.
Dabei bedeutet:
- No StepUp = CR2032 Batterie
- StepUp single AA = eine AA Batterie und StepUp
- StepUp two AAA = zwei AAA Baterien und StepUP
Die Parameter „Step-Up Present“, „Low-Voltage“ und „Critical Voltage” ergeben sich aus der Wahl in der DropDown Liste, können aber noch angepasst werden. Für den fehlerfreien Betrieb sollten diese aber unverändert bleiben!
Nach drücken der Taste "Create" erscheint eine Schaltfläche "Save Bootloader", mit welcher der angepasste Boorloader gespeichert werden kann. Es wird hierzu kein Netzzugang benötigt. Alles erfolgt per Javascript im Browser.
Flashen des OTA Bootloaders
Anschließend wird per ISP (USBasp oder vergleichbares) der Bootloader geflashed. Zum Laden des Bootloaders, sowie der Software werden die Arduino SDK bzw. avrdude und die erwähnte makeota.html benötigt.
Der Bootloader lässt sich nun, bei gestecktem ISP Programmer, über folgende Befehle flashen:
avrdude -p m328p -P usb -c usbasp -B 3 -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m
Setzt die Fuses.
avrdude -p m328p -P usb -c usbasp -V -U flash:w:bootloader.hex
lädt den eigentlichen Bootloader. Dabei ist zu achten, dass "bootloader.hex" die bootloaderdatei ist und dementsprechend auch im Verzeichnis sein muss, wo die Datei zu finden ist.
Wenn jetzt die Platine mit Spannung versorgt wird, sollte die rote LED 7x blinken. Das signalisiert, dass der Bootloader erfolgreich gestartet wurde. Er wartet jetzt darauf, dass die Firmware übertragen wird.
OTA (Over The Air) Update
Hierzu wird flash-ota benötigt.
Flash-ota funktioniert aktuell nur mit CUL/COC oder HM-CFG-USB unter Linux (Update mit CUL oder HM-CFG-USB unter Linux), mit dem "HomeMatic Firmware Update Tool" unter Windows (Update mit HM-CFG-USB unter Windows) oder mit einer CCU2.
Für einen HM-CFG-USB oder den HM-UART sieht der Aufruf wie folgt aus:
flash-ota -f avr_HM_SEC_RHS_201705271601.eq3 -s RHS0000000
Falls Fehler während der Übertragung auftreten, muss die Übertragung nochmals wiederholt werden. Wenn die Firmware erfolgreich übertragen werde konnte, kann der Sensor gepairt werden.
Sensor spezifische Einstellungen
Der Sensor meldet die Position entsprechend welcher Zustand an A0 & A1 an liegt. Derzeit ist folgende Logik implementiert: A0 & A1 offen - PosA -> CLOSED A0 geschlossen - PosB -> OPEN A1 geschlossen - PosC -> TILTED
Die Bedeutung der Positionen kann mittels der entsprechenden Register eingestellt werden.
Ebenfalls kann die CyclicInfoMsg aktiviert werden (zum aktivieren siehe Link am ende des Artikels). Der Sensor meldet sich dann alle 24 Stunden mit dem aktuellen Status.
Register zum ändern der Position von A0 & A1:
set <Device_Name> regSet msgRhsPosA <closed|open|noMsg|tilted>
set <Device_Name> regSet msgRhsPosB <closed|open|noMsg|tilted>
set <Device_Name> regSet msgRhsPosC <closed|open|noMsg|tilted>
Gehäuse
Für das Gehäuse wurde auf eine 3D-Drucklösung gesetzt. Es gibt inzwischen mehrere Versionen (abgerundete obere Kante, eckige Kante uvm.).
Die Standard Version ist hier zu finden.
Wer keinen 3D-Drucker besitzt kann sich im Forum nach Druck Hilfen um schauen. Einige User bieten gegen kleines Geld einen 3D-Druck Service an.
Verfügbare Readings
Der FDGK kann folgende drei Status an Fhem übermitteln:
- open
- closed
- tilted
Links
Alles mögliche zu dem Projekt auf Github
HomeMatic_Type_threeStateSensor CyclicInfoMsg aktivieren