Hall Sensor
- Details
- Geschrieben von Alexander Schulz
- Kategorie: Sonstige
- Zugriffe: 29405
Ein Hall-Sensor misst magnetische Feldstärke. Einfach ausgedrückt: mit diesem Sensor kann ein Magner in der Nähe erkannt werden. Die Platine hat einen digitalen Ausgang. Dieser wird auf High geschaltet, wenn ein Magnetfeld genügender Stärlke vorhanden ist. Die Empfindlichkeit ist einstellbar (Poti).
Bei der Einstellung einer höheren Empfindlichkeit wird ein kleiner Neodym Magnet wird aus ca. 7 mm sicher erkannt. Bei einer weiteren Erhöhung wird alles Mögliche erkant incl. einer Handbewegung. Dieser Effekt scheint aber nicht stabil zu sein (Sensor entwickelt dabei eine Art "Eigenleben").
Meine Idee war, mit Hilfe diesen Sensors den Zustand meines Garagentores zu erkennen. Dabei habe ich auf höhere Reichweite gehofft, denn die technische Gegebenheiten lassen es nicht zu, die Magnete so nahe am Sensor zu platzieren. Evtl. wäre das mit einem größerem Magner realisierbar, jedoch werde ich wohl eine andere Methode anwenden müssen. Derzeit überlege ich in die Richtung einer Ultraschall Entfernungsmessung. Und dieses kleine Ding geht vorerst in die "Grabbelkiste".
Level Shifter
- Details
- Geschrieben von Alexander Schulz
- Kategorie: Arduino / ATMEL
- Zugriffe: 35100
Standard Arduino Boards sind für 5V Betriebsspannung ausgelegt. Auch die Steuersignale (z.B. I²C-Bus) orientieren sich an diesem Wert. Viele Sensorchips benötigen jedoch andere, i.d.R. deutlich geringere Spannungen (meist 3,3V). Das ist zwar günstig im Sinne des Stromverbrauchs, macht jedoch eine direkte Verwendung mit 5V-Arduino-Boards nicht ohne weiteres möglich.
Viele Sensoren sind in Form von Breakout Boards als ferigen Module erhältlich. Außer bequemmeren Anschlüssen (in Form von Pin-Leisten) beinhalten diese oft auch einen Spannunsregler zum Versorgen des eigentlichen Sensor-Bausteins. Damit ist aber das Problem mit den unterschiedlichen Spannungen noch nicht vollständig gelöst, denn auch die Ein- und Ausgängen müssten passend versorgt werden. Bei 3,3V besteht zwar kein Problem mit der High/Low-Level Erkennung, jedoch sind die Eingängen der meisten Chips nicht 5V-tolerant. Damit eine zu hohe Spannung die Bausteine nicht zerstört, werden die Ein-/Ausgängen im einfachsten Fall mittels PullUp-Widerstände auf 3,3V 'gezogen'. Dadurch wird die ggf. von Arduino gelieferte 5V-Spannung auf ein erträgliches Niveau begrenzt. Wird jedoch am selben Strang (I²C Bus etc.) ein 5V Modul mit eigenen PullUps verwendet, kann die Spannung auf ein gefährlichen Wert steigen (in solchen Fällen sind die PullUps zu deaktivieren bzw. auszulöten). Eine Bessere Lösung stellen aktive Level Shifter (Pegelumsetzer) dar. Mit ihrer Hilfe wird auf jeder Seite eine passende Spannung garantiert.
Einfache bedirektionale Pegelumwandler für I²C Bus sind günstig im Internet (z.B. bei eBay) zu bekommen. Heute brachte mir die Post so ein Modul, ich habe ihn auch gleich getestet. Es ermöglicht eine sichere Verwendung von mehreren 5V- und 3,3V-Modulen auf dem selben Bus. Es wird nur ein Umwandler pro Bus-Strang benötigt.
Bei einem Betrieb mit dem Pegelwandler wind auf den Sensor-Boards evtl. vorhandene Spannungsregler eher hinderlich, da sie Verluste verursachen, die meisten Sensoren funktionieren jedoch trotzdem einwandfrei (die Sensorchips bekommen dann etwas weniger als 3,3V, dies ist jedoch meistens noch durchaus in dem zulässigen Bereich). Wer will, kann die vorhandenen Regler-Bausteine auslöten (und kurzschließen). Ein weiteres Proglem kann sich durch die an den Boards vorhandenen PullUp-Widerstände ergeben. Je mehr es davon gibt, umso kleiner wird der Gesamtwiderstand. Das führt zu einem unnötig hohen Stromverbrauch und kann sogar (bei besonders vielen parallel vorhandenen PullUps) die Ports des Arduino überlasten. Idealerweise sollen überflüssige PullUps ausgelötet werden (es wird lediglich ein PullUp pro Leitung benötigt).
Dem Umsetzer lag kein Schema bei, meine Rekonstruktion dürfte jedoch der tatsächlichen Implementierung entsprechen.
Eine andere Version der Level Shifters, die mir vorliegt, hat doppelt soviele Kanäle, ist aber ansonsten sehr ähnlich aufgebaut. Das vorherige Board ist eindeutig zur Verwendung im I2C Bus bestimmt, dieses kann auch bequem für SPI verwendet werden (auch wenn die Fähigkeit, die Signale in beide Richtungen zu transportieren in diesem Fall nicht benötig wird).
HMLAN Konfigurator
- Details
- Geschrieben von Alexander Schulz
- Kategorie: HomeMatic
- Zugriffe: 51250
Damit FHEM mit den HomeMatic Komponenten kommunizieren kann, braucht es passende Zusatzhardware, die die Funkverbindung yu den Geräten (868MHz) herstellt. Es existieren mehrere Möglichkeiten, für mich kamen zwei Geräte in die engere Auswahl:
- CUL-Stick von busware und
- HMLAN Konfigurator von eQ-3 (HomeMatic Hersteller)
Beide sind für jeweils ca. 50 Euro zu bekommen (ELV hat mittlerweile Preise erhöht, daher ggf. Amazon bemühen: Link).
CUL-Stick ist ein USB-Gerät und kann HomeMatic- und FS20-Komponenten (plus einige andere) steuern, jedoch nicht gleichzeitig (eje nach Modus muss eine andere Firmware drauf).
HMLAN kommuniziert mit dem FHEM-Server über die Ethernet-Schnittstelle. Es könnenn zwar nur HomeMatic-Geräte gesteuert werden, dafür beherrscht dieser Adapter die AES-Übertragung (signierte Funkkommunikation, s. hier). Da einige HomeMatic-Komponenten diese Übertragungsart voraussetzen, können diese mit CUL nicht mit FHEM verwendet werden.
Ich habe mich letztendlich für den HMLAN-Adapter entschieden und nach der Anleitung in FhemWiki eingerichtet (Link). Das ging in etwa so (Kurzfassung):
- HMLAN vorbereiten:
mit Hilfe von beigelegter Konfiguraitionssoftware ("HM Lan-Interface Konfigurator") die Verschlüsselung der LAN-Verbindung deaktivieren ("AES Encryptet LAN Communication", diese wird von FHEM nicht unterstützt. Nicht mit der AES-Übertragung per Funk zu verwechseln) und eine statische IP-Adresse vergeben (bzw. dafür sorgen, dass HMLAN von dem DHCP-Server immer dieselbe IP erhält).
- FHEM-Konfiguration erweitern:
[...] define HMLAN1 HMLAN 192.168.0.43:1000 attr HMLAN1 room Technik [...]
Nach dem Neuinitialisieren des Systems (durch einen Restart oder per reloadcfg-Befehl) werden weitere Attribute automatisch hinzugefügt:
[...] define HMLAN1 HMLAN 192.168.0.43:1000 attr HMLAN1 hmId 123ABC attr HMLAN1 room Technik attr HMLAN1 wdTimer 25 [...]
Das Attribut "hmId" ist eine Art Adresse für das HomeMatic-Netzwerk. Bei einer Änderung werden alle Geräte neu gepairt werden müssen. "wdTimer" definiert die Trigger-Zeit in Sekunden und sollte so belassen werden.
Detailiertere Beschreibungen zu diesen und weitere möglichen Attributen sind der CommandRef zu entnehmen.
Danach können die HomeMatic Geräte an der neuen "Zentralle" angemeldet werden (in FHEM-Jargon heißt dieser (pro Gerät normalerweise einmaliger) Vorgang "pairen"). Dazu müssen HMLAN und das zu paarende Gerät in den "Anlernmodus" versetzt werden. Für HMLAN passiert das durch den Befehl hmPairForSec, bei den Geräten muss meistens ein Knopf gedrückt werden (je nach Gerät soll dieser mehrere Sekunden lang gedrückt gehalten werden, bis eine LED zu blinken anfängt). Weiteres dazu s. in den Beschreibungen zu den einzelnen Geräten und auch hier.
Sollte es eimal nötig sein, die Hersteller-Konfigurationssoftware wieder zu verwenden, muss dazu der FHEM heruntergefahren werden, denn HMLAN akzeptiert gleichzeitig nur eine Verbindung.
Ich habe diesen Sender neben meiner Fritz!Box im Hausanschlussraum untergebracht. Dort leuchtet er fröhlich vor sich hin ;-)
Interessant ist die Power-LED, sie liefert eine Art FHEM-Status. Wenn diese dauerhaft zu blinken anfängt, ist die Verbinfung nicht mehr intakt. Das bedeutet meist den Absturz des Servers. Wenn man (wie ich) die Entwicklungsversionen nutzt, kann so ein Absturz schon mal passieren.
USB 1-wire Adapter
- Details
- Geschrieben von Alexander Schulz
- Kategorie: 1-Wire
- Zugriffe: 43921
Eine einfache und wohl auch die günstigste Möglichkeit, eine recht genaue Temperaturmessung in der digitalen Form vorzunehmen, ist der Einsatz von 1-wire Sensoren wie DS18B20. Diese sind günstig und gut verfügbar, sie sind +/-0,5°C genau und bieten einen größeren Erfassungsbereich (-55°C bis +125°C), sie verbrauchen wenig Strom und können in größeren Anzahl parallel zueinander über längere Distanzen verkabelt werden, sie haben jeweils eine eigene einmalige Adresse... Das konnte ich gar nicht unversucht lassen. Als erstes stellt sich natürlich die Frage nach dem Anschluss an FHEM-Server (physisch an meine Fritz!Box).
FhemWiki gibt eine gute Auskunft über die verfügbaren Möglichkeiten (Link), auch speziell in bezug auf eine Fritz!Box (Link). Da ich kein passendes (auch preislich) Fertiggerät gefunden habe, entschloss ich mich den 1-wire-Adapter selbst aufzubauen.
Zunächst habe ich den enpfohlenen USB-RS323 Adapter mit FTDI Chip verwendet. Dieser Chip erfordert keinen zusätzlichen Treiber auf einer Fritz!Box. Das System lief sofort. Leider traten nach einem längerem Betrieb (mehrere Stunden bis Tage) immer wieder Instabilitäten auf: 1-wire-Bus fiel komplet aus. Es sieht so aus, dass aus ungeklärten Gründen eine kurzfristige Unterbrechung der Verbindung zwischen Fritz!Box und dem USB-Adapter stattfand. Daraufhin war der Adapter unter einer anderer Adresse verfügbar (/dev/ttyUSB1 statt /dev/ttyUSB0) und konnte von FHEM nicht mehr weitergenutzt werden. Der Austausch des Adapters gegen einen anderen mit dem gleichen Chip brachte keine Besserung (beim Testen mit meinem PC oder zum Verbinden meines Arduino Pro Mini mit dem PC funktionieren beide Platinen ohne Probleme).
Ein Versuch mit einem anderen Chip (Prolific PL-2303) brachte endlich die Lösung: mein 1-wire-Bus läuft seit Monaten problemlos. Die Adapter-Platinchen mit einem PL2303 sind sehr günstig bei eBay zu bekommen. Damit die Fritz!Box diesen Adapter erkennen kann, muss ein entsprechender Kernel-Modul installiert und geladen werden (pl2303.ko passend zu einer FB7390 findet man hier). Diese Datei habe ich nach 'fhem/lib' kopiert und FHEM-Startscript (startfhem) um folgende Zeile ergänzt:
insmod ./lib/pl2303.ko
Meine Startscript sieht damit folgendermaßen aus:
#!/bin/sh
home=/var/InternerSpeicher/fhem
cd $home
trap "" SIGHUP
modprobe cdc_acm
modprobe ftdi_sio
insmod ./lib/pl2303.ko
sleep 2
ln -sf $home/FHEM/fhemcmd.sh /var/fhemcmd
PATH=$home:$PATH
export PATH
export LD_LIBRARY_PATH=$home/lib
export PERL5LIB=$home/lib/perl5/site_perl/5.12.2/mips-linux:$home/lib/perl5/site_perl/5.12.2:$home/lib/perl5/5.12.2/mips-linux:$home/lib/perl5/5.12.2
# add user fhem with uid of boxusr80/boxusr99 (== ftpuser)
# Comment/delete everything between START and END to run FHEM as root
## START:fhem-user
id fhem > /dev/null 2>&1
if test "$?" -ne "0"; then
grep -q 1099 /etc/passwd;
if test $? -eq "0"; then
echo "fhem:any:1099:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
else
echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
fi
chown -R fhem FHEM docs log www
chown fhem . *
chown root dfu-programmer
chmod u+s dfu-programmer
fi
## END:fhem-user
perl fhem.pl fhem.cfg
Jetzt muss die Hardware noch dem FHEM-Server bekannt gemacht werden. Das geschieht durch einen Eintrag in fhem.cfg.
define OWio1 OWX /dev/ttyUSB0
Folgender Auszug aus fhem.cfg zeigt die komplette Definition des Adapters und eines Temperatursensors incl. Log-Datei und eines Diagramms der Temperaturkurve.
[...]
define OWio1 OWX /dev/ttyUSB0 attr OWio1 alias 1-wire Controller
attr OWio1 room Testroom
define Sensor_Test OWTHERM DS18B20 B5F391040000
attr Sensor_Test IODev OWio1
attr Sensor_Test alias Testsensor
attr Sensor_Test model DS1822
attr Sensor_Test room Testroom
attr Sensor_Test tempHigh 75
attr Sensor_Test tempLow 70
define FileLog_Sensor_Test FileLog /var/InternerSpeicher/fhem/log/Sensor_Test-%Y.log Sensor_Test
attr FileLog_Sensor_Test logtype techtemp4:Plot,text
attr FileLog_Sensor_Test room Testroom
define wlSensor_Test weblink fileplot FileLog_Sensor_Test:techtemp4:CURRENT
attr wlSensor_Test room Testroom
[...]
Nach dem Anschluss eines neue Sensors, werden entsprechende Einträge von FHEM automatisch erstellt. Sie müssen nur noch um die Eingaben wie Namen, Alias, Raum und ggf. Log und Visualisierung ergänzt werden.
Den fertigen Adapter und viele der Sensoren habe ich dauerhaft in Verteilerdosen installiert.
Das hier sieht unordentlicher aus, als es wirklich ist. Die schwarzen Stellen sind Reste von Edding-Markierungen und keine Brandnarben ;-)
Bezugsquellen:
ds2480 Serial 1-Wire Line Driver m. Load Sensor
PL2303 USB To RS232 TTL Module
FHEM auf Fritz!Box 7390 installieren
- Details
- Geschrieben von Alexander Schulz
- Kategorie: FHEM
- Zugriffe: 55784
FHEM auf der Fritz!Box 7390 zu installieren ist denkbar einfach. Es existiert ein Firmware-Image, das mit Boardmitteln (System->Firmware-Update->Firmware-Datei) installiert werden kann. Man hat sogar die Wahl zwischen einer offiziellen Version von AVM und einer, die auf der FHEM-Webseite bereitgestellt wird.
Die offizielle Version, die ich ausprobiert habe, war leider nicht (mehr) zu empfehlen, denn diese war schon recht alt. Es ist mir auch nicht gelungen, diese mit Hilfe des eingebauten Update-Mechanismus zu aktualisieren. Möglicherweise lag das daran, dass diese Version in einer chroot-Umgebung läuft, was zwar mehr an Sicherheit bietet, verhindert jedoch einige Funktionen des FHEM-Servers wie z.B. Mailversand. Zwischendurch habe ich gesehen, dass AVM eine neuere Version bereitgestellt hat, ich bin jedoch mit dem inoffiziellen Image sehr zufrieden.
Die inoffizielle Version wird genauso installiert, wie die von AVM. Wegen der fehlenden Signatur beschwert sich die Box mit der Warnung über "Vom Hersteller nicht unterstützte Änderungen". Möglicherweise hat das Auswirkungen auf Garantie, ansonsten störrt das in normalen Betrieb nicht weiter. Nach der Installation ist der Server unter der Adresse http://fritz.box:8083/fhem verfügbar. Die grundlegenden Informationen sind auf der FHEM-Webseite (http://fhem.de/HOWTO_DE.html) zu finden.
Als erstes empfehle ich die Software upzudaten. Das kann per Telnet aber auch im Browser vorgenommen werden. Dafür ist der Befehl 'update' einzugeben. Nach einer Weile (das kann schon ein Paar Minuten dauern) soll eine Erfolgmeldung angezeigt werden. Danach ist noch ein 'shutdown restart'-Befehl notwendig. Nach dem erfolgten Serverrestart kann FHEM konfiguriert werden.
Zunächst sollte man sich um die Zugriffswege (Telnet und Web) und Sicherheit (Passwörter und HTTPS) kümmern. Danach richtet man nach und nach die vorhandene Sensoren und Aktoren ein, erstellt Steuerungsscripte und definiert Visualisierungsdiagramme. Das alles wird in der Dokumentation gut beschrieben. Außer der Hauptseite http://fhem.de sind noch http://www.fhemwiki.de und http://fhem.de/Heimautomatisierung-mit-fhem.pdf sehr zu empfehlen.
Seite 13 von 14