Ich möchte hier mein iButton Schlüsselbrett vorstellen. Das Schlüsselbrett verrichtet schon seit einigen Jahren erfolgreich seinen Dienst. Es wird jedoch zunehmend immer schwieriger die iButtons über das normale OWX Modul am 1-Wire Bus abzufragen. Das Problem ist, dass diese iButtons ständig gepollt werden müssen (<5s) um sinnvoll die Funktion eines digitalen Schlüsselhalters zu realisieren. Auch ist diese Variante sehr störanfällig. In dem AskSin++ Thread (
https://forum.fhem.de/index.php/topic,57486.msg844810.html#msg844810) kam dann die Idee auf, dafür ein HB HM Device zu kreieren. Eigentlich wollte -papa- nur ein iButton Türöffner haben und da habe ich mich mit meinem Use-Case zwischen gedrängelt und siehe da, das Gerät "HB-IBUT-8" (
https://github.com/pa-pa/AskSinPP/tree/master/examples/custom/HB-IBUT-8) ist entstanden.
Aufbau meines Schlüsselhalters:Ich habe 3 iButton Magnetkontaktflächen (Ich meine die waren aus dem fuchs-shop) verbunden zu einem 1-Wire Bus. Für das HB-IBUT-8 als Hardware verwende ich einen alten AVR panStamp (
https://wiki.fhem.de/wiki/PanStamp). Man kann hier natürlich auch ein AVR/Arduino zusammen mit dem CC1101 Funkmodul nehmen oder auch was anderes.
In meinem Schlüsselbrett befindet sich noch ein LCD mit 1-Wire Adapter (
https://wiki.fhem.de/wiki/1-Wire_Textdisplay) welches aber an meinem regulären 1-Wire Bus hängt und über OWX angesprochen wird. Das steuert im übrigen auch die LEDs in den Magnethaltern.
Platine und Verkabelung:Die Platine habe ich auf Lochraster schnell zusammen gelötet. Durch Verwendung des panStamps wird hier nicht viel benötigt. Man braucht nur irgendwie die 3,3V für das Modul und die iButtons (Die iButtons laufen sauber mit 3,3V, hat man ein 5V Modul (Arduino nano) geht das natürlich auch! Aber das CC1101 braucht glaube ich eh 3,3V, macht also kein Sinn 5V zu benutzen.). Dann sollte man sich 2 Taster für config und reset (optional) genehmigen und entweder eine Dual oder zwei einzelne LEDs für die klassischen HM Status. Der Grundaufbau ist also für alle HB HM Geräte gleich. Für die iButtons und dem 1-Wire Bus gibt es aber eine Besonderheit. Die iButtons haben nur 2 Kontakte und werden aus diesem Grund parasitär mit Strom versorgt. Aus diesem Grund ist es wichtig den 1-Wire Bus auf ein High Pegel zu halten. Die Kondensatoren in den iButtons speichern somit genug Energie um die Übertragung der Seriennummer zu gewährleisten. Den 1-Wire Bus hält man mit Hilfe eines 4,7 kOhm Widerstandes gegen VCC auf High Pegel. Zu gering sollte der Widerstand nicht sein, da sonst eine Kommunikation nicht mehr möglich ist. Der Pegel muss ja zum Senden auch irgend wann mal auf Low gehen können. Viel mehr als 4,7 kOhm sind auch nicht gut, dann kann es wiederum Probleme bei der Kommunikation geben. Was also annähernd 4,7 kOhm hat und in der Schublade liegt ist zu gebrauchen.
Funktion:Für das Schlüsselbrett können "beliebig" viele iButton Kontaktflächen zu einem 1-Wire Bus zusammengefasst werden und mit dem HB-IBUT-8 verbunden werden. Zuerst muss das neue Gerät natürlich mit einer CCU/FHEM etc. gepaired werden. Das Gerät stellt 8 Kanäle zu Verfügung. Jedem Kanal kann ein iButton bzw. eine iButton Seriennummer zugewiesen werden. Das kann auf 2 Wegen geschehen. Entweder man schaltet einen Kanal auf "on" und hält anschließend den neuen iButton auf eine freie Kontaktfläche, oder man fügt über die Register R-addressHi und R-addressLo die Adresse manuell hinzu.
Standardmäßig verhält sich das Gerät wie eine Fernbedienung. Es werden Remote-Events (Short/Long) gesendet, wenn ein bekannter iButton erkannt wird. Wird das buttonMode Register von remote auf state umgestellt, verhält sich das Gerät, wie ein ThreeStateDevice (z.B. Fensterkontakt) mit den States [absent,present,educate].
Das funktioniert wirklich sehr schnell und sauber. Man spart sich also das ganze polling. Ich bin wirklich sehr zufrieden. Einziger Wermutstropfen ist die ungesicherte Übertragung über Funk. Da aber nicht die Seriennummer an sich übermittelt wird ist es halb so schlimm. Ein Außenstehender muss also schon ziemlich genau wissen, was dieses HM Gerät macht. Der Gedanke ist deshalb wichtig weil man natürlich seine Alarmanlage darüber steuern kann.
FHEM seitig kann man hier natürlich entsprechend reagieren und je nach Gusto beim Verlassen der Wohnung die Heizung und das Licht abstellen etc. Das ist dann aber ein anders Thema.
Die Magnethalter sind übrigens sehr gut, da ist noch nie ein Schlüsselbund abgefallen. Es kann nur mal passieren, dass es kein Kontakt gibt. Beim Anhängen des Schlüssels macht es sich also gut eine kleine gekonnte Drehung auszuüben um den Dreck weg zu schleifen. Ein kleiner Nachteil ist (je nach System), dass der iButton magnetisch ist und nicht der Halter. Sprich in der Tasche aufpassen mit Kreditkarten und es sammeln sich im Laufe der Zeit auch Eisenspäne an dem Ding. Ein "klebenbleiben" am Schlüsselring wie einige berichten etc. stört mich eigentlich weniger.
Die Software bzw. Firmware kann man gut selber kompilieren mit der Arduino IDE. Man muss natürlich die HM Seriennummer und die Ports für die Taster, LED und vor allem den 1-Wire Bus anpassen! Beispiel:
#define LED1_PIN 4 //rot
#define LED2_PIN 5 //gelb
#define CONFIG_BUTTON_PIN 9
#define IBUTTON_READER_PIN 8
Damit FHEM mit dem Gerät etwas anfangen kann, muss das aktuelle
HMConfig_AskSinPPCustom.pm installiert werden - in das FHEM Verzeichnis kopiert werden.
Da mein Schlüsselbrett schon ein paar Tage alt ist gibt es hier im Forum bereits Fotos aber ich hänge noch mal aktuelle Bilder an diesen Thread.
Verbesserungen:- Steuerung der LEDs in den iButton Magnetkontaktflächen über das HB-IBUT-8 Gerät
- Eventuell mehr als einen 1-Wire Bus auf dem HB-IBUT-8 bereitstellen. Der Vorteil wäre hier das man erkennt auf welchem der Kontaktflächen welcher iButton hängt. So kann man dann auch die LEDs individuell steuern.
Bei Fragen einfach melden! Ein Dank geht natürlich an papa für die Erstellung/Programmierung des neuen HB-IBUT-8!
/Daniel