Robins Blog – Technik und Multimedia

Fhem und MySensors: Angepasster Tür-Fenster Kontaktsensor

Einige von Euch haben mich gefragt, welche günstige Tür-Fenster-Kontaktsensoren es für Fhem gibt. Ich nutze schon seit ungefähr zwei Jahren ein FS-20 TFK (-> Amazon: Funk-Tür-/Fensterkontakt FS20 TFK
) sowie selbstgebaute von MySensors. Andere nutzen für ihr Homematic-System folgende TFK (siehe amazon.de: EQ3 HomeMatic Funk-Fensterkontakt HM-SEC-SC-2
).
Blog-Leser Jens, welcher sich mit MySensors und Mikrocontroller super auskennt, hat nun eine meiner Meinung nach – Hammer – Software für Tür-Fenster Kontaktsenoren entwickelt, welcher sich am BinarySwitchSensor anlehnt.

Natürlich ist hier selber zusammenbauen angesagt, Erfahrungen mit Flashen von Mikrocontroller und Löten von Bauteilen werden benötigt.

Die Fakten vom neu angepassten Tür-Fensterkontakt unter MySensors sehen so aus:

Allein schon die Messung der Batteriespannung und dessen Übertragung zu Fhem halte ich schon für ziemlich sexy.

Dieser Arduino ProMini muss mit einem speziellen Boot-Loader geflashed werden, um eine lange Laufzeit zu erreichen.

Jens hat uns mehrere Firmwares zur Verfügung gestellt:

1/HB/  : 1 TFK-Kontakt mit Heartbeat ohne Bootloader (hex-file) TFK-V21-H.ino.eightanaloginputs.hex
1/HB/ : 1 TFK-Kontakt mit Heartbeat mit Bootloader (hex-file) TFK-V21-H.ino.with_bootloader.eightanaloginputs.hex

Ich kann die Version MIT Bootloader empfehlen, weil dort noch einige Tweaks für den ProMini gemacht wurden.

Folgende Bauteile werden pro TFK-Sensor benötigt:

Für die Funktion der gesamten MySensors Umgebung benötigt:
MySensors-Gateway.
Im einfachsten Fall ein USB-Gateway, welches direkt am Raspi angeschlossen wird.
oder ein WLAN-Gateway (Blog-Beitrag).

Flashen des Pro-Minis:
Die Quellen dieser Software stehen uns Blog-Leser Jens leider nicht zur Verfügung, deshalb können wir hier nicht über die Arduino-Oberfläche flashen. Stattdessen benötigen wir ein USBASP-Modul (s. oben), welches idealerweise an einem Raspi angeschlossen ist. Als Software benötigt man nur den AVRDUDE den man mit apt-get install avrdude installieren kann. Nachdem man das USBASP-Modul an dem Pro-Mini angeschlossen hat, öffnet man die Konsole und kopiert eine von den möglichen Firmwares in ein Verzeichnis.
Nur führt man innerhalb der Konsole folgenden Befehl aus:

Hierbei muss vorher festgestellt werden, wo an welchem USB-Port das USBASP-Modul angeschlossen ist (ttyAMA0) und die richtige hex-Datei einliest (tfkmitboot.hex).

avrdude -c usbasp -b 9600 -p /dev/ttyAMA0 -v -v -pm328p -u -U flash:w:tfkmitboot.hex

Als Ergebnis kommt aus avrdude folgendes heraus:

root@raspberrypi:~/mysensors# avrdude -c usbasp -b 9600 -p /dev/ttyAMA0 -v -v -pm328p -u -U flash:w:tfkmitboot.hex

avrdude: Version 6.1, compiled on Jul 7 2015 at 13:18:47
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is „/etc/avrdude.conf“
User configuration file is „/root/.avrduderc“
User configuration file does not exist or is not a regular file, skipping

Using Port : usb
Using Programmer : usbasp
Overriding Baud Rate : 9600
avrdude: seen device from vendor ->www.fischl.deUSBasp<-
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : usbasp
Description : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: „flash“ memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: reading input file „tfkmitboot.hex“
avrdude: input file tfkmitboot.hex auto detected as Intel Hex
avrdude: writing flash (32652 bytes):

Writing | ################################################## | 100% 4.57s

avrdude: 32652 bytes of flash written
avrdude: verifying flash memory against tfkmitboot.hex:
avrdude: load data flash data from input file tfkmitboot.hex:
avrdude: input file tfkmitboot.hex auto detected as Intel Hex
avrdude: input file tfkmitboot.hex contains 32652 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 3.45s

avrdude: verifying …
avrdude: 32652 bytes of flash verified

avrdude done. Thank you.

Wenn alles richtig gemacht wurde, wurde nun der Boot-Loader vom Pro-Mini angepasst und sofort auch die Firmware für den TFK-Sensor geflashed.

Stromsparen extrem:

Um noch richtig Strom zu sparen, entfernen wir die Vorwiderstände für die LEDs und den 3,3 V Spannungsregler, siehe Foto:

Nun verkabeln wir den ProMini mit dem nRF, wie in der MySensors Informations-Seite angegeben.

Wichtig ist der 1 MΩ Widerstand und den Reed-Kontakt, welchen wir als letztes anschließen. Wie auf dem Foto zu sehen, wird das eine Ende vom 1 MΩ Widerstand am Arduino VCC-Pin angeschlossen, das andere Ende am D3-Pin. Darunter als Schalter abgebildet dann der Reed-Kontakt (oben D3), der schließlich mit GND verbunden wird.

Der Sensor ist nur fertig und kann mit der Batterie verbunden werden.

 

Pairen mit Fhem
Das Vereinen mit dem Gateway geschieht wieder in der üblichen Weise. Inclusion-Mode einschalten, dann kurz beim Pro-Mini auf den Reset-Microtaster klicken und schon wird der Sensor in Fhem angelegt.

Anzeige der Readings in Fhem

Nun können wir via Fhem auf die Readings reagieren. Interessant ist das Feld tripped1, welches den on – off Zustand des Reed-Kontaktes beschreibt. So könnte ihr beispielsweise einen Alarm auslösen oder auch auf eine LED im LED-Bilderrahmen (siehe Blogbeitrag) in unterschiedlichen Farben anzeigen lassen.
Ebenfalls wird in den Readings die Batteriespannung angezeigt (voltage). Hier könnt ihr reagieren, wenn die Batterie mal zuende gehen sollte.

Versionshistorie von Jens:
Changelog Version G -> H
* 2.1H (Fehlerbereinigung + Optimierung)
* – Problem Heartbeat wird statt 24H alle 26:14 ausgeloest, also eine Differenz von 2:14 = 134 Minuten = 8040000 ms
* – neue Variable „SLEEP_TIME = SLEEP_IN_MS – SLEEP_KORREKTUR“
*- Negation der Wertuebermittlung beim Switch, somit ist keine Aenderung in fhem mehr noetig
*- weitere Codeoptimierung

Fazit: Der TFK Sensor mit dem angepassten Code von Jens ist eine interessante Alternative zu den Fertigprodukten wie Homematic und FS20.
Ihr könnte die Bauteile bei Eurem Elektronik-Lieferanten kaufen, einige Bauteile davon habe ich auch hier. Ferner könnte ich Euch den ProMini flashen.

Aktion: Das Flashen von Bootloader ist nicht jedermanns Sache. Zum einen kann der ProMini in die ewigen Silizium-Jagdgründe wandern, zum anderen ist es auch eine Frickelei, bis das Flashen erst mal läuft.Wer also das Flashen vom Arduino Pro Mini 3.3V nicht hinbekommt, kann sich bei mir melden. Für 9,99 Euro inkl. Versand flashe ich Euch den Pro mini (entweder mit oder ohne Fuses). Wer die Pinheaders auch dran haben möchte, auch kurz melden.

Das könnte Euch auch interessieren:

[sgmb id=“1″]

Die mobile Version verlassen