) 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:
-
*TFK 2.0x (ProMini 3V3@8Mhz ohne PowerLED und ohne LE33)
0,001 mA mit NRF sleep Kontakt offen
0,008 mA mit NRF Kontakt geschlossen
5 mA senden (-2mA wenn LED Vorwiderstand entfernt wurde)
17 mA Reset - Messung und Übertragung der Batteriespannung, ihr seht in Fhem die aktuelle Batteriespannung des Sensors und könnt reagieren
- Heartbeat-Funktion – einmal am Tag „meldet“ sich der TFK bei Fhem um zu signalisieren, ob alles ok ist. Hier kann man in Fhem ein Notify programmieren, welches bei fehlendem Heartbeat eine Meldung abgibt (z. B. per Telegram zum Smartphone).
- 1 oder 2 Ausgänge mit Reedkontakte (Kontakte am Fenster kleben)
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:
- Arduino ProMini 3,3 V 8MHz, z.b. bei amazon: Arduino kompatibles ATmega Pro Mini / 3.3V, 8MHz / ATmega328 – Simpleduino
- nRFL01+ (amazon.de: Kuman 10pcs nRF24L01+ 2.4GHz Antenna Wireless Transceiver RF Transceiver Module Arduino Compatible K19
) - Batterie 3V z B. Lithium-Batterie PANASONIC CR123A (amazon: Panasonic PACR123A_10 Photo Lithium Batterie (3 Volt, 10-er Pack)
) - Reed-Kontakt (oder jeder andere Kontakt / Schalter)
- Magnete zum Auslösen des Reed-Kontaktes
- 1 Mohm Widerstand (Wichtig!)
- USBASP zum Flashen des Bootloaders, z.b. bei amazon.de (Programmierer-Adapter 3.3V oder 5V USBASP Download-Programm ISP-AVR
)
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.
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:
- MySensors-Sensoren an Fhem – Blogbeitrag
- Stromausfall am Raspi per Fhem mitteilen (Blogbeitrag)
- Airwick Freshmatic Compact auseinandergebaut und als Geruchssensor verwendet
- LED-Stripe 2812b als LED-Inforahmen mit MySensors
[sgmb id=“1″]