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

  • eBay (habe schon sogar unter 1 EUR gesehen: hier)

 

Kommentare (0)

Cancel or