Es gibt Lösungen für den professionellen Einsatz von z.B. W&T, kosten aber ca. 250€, oder eine USV mit Temperatur Modul.
Diese haben dann einen integrierten Webserver, automatische Emailbenachrichtigung, etc. Für den Einsatz in der Firma.
Für den privaten Gebrauch kommen wir mit folgendem Bastelvorschlag auf ca. 5€ pro Sensor mit Schaltung.
Benötigt aber einen vorhandenen Linux Server mit serieller Schnittstelle und DigiTemp Software.
- Die Schaltung mit der kleinen Platine kommt bei mir in eine CAT Connector Box, passt aber auch komplett in das Sub-D Gehäuse.
- Alle Bauteile waren bei Reichelt verfügbar und wurden auch dort bestellt. (Bauteilliste und Bestellnummern als Bild unten.)
- Benötigt werden noch: RJ45 Crimp Stecker, Patchkabel, Lochrasterplatine, Sub-D Stecker mit Gehäuse. (Hat der Bastler ja vorrätig.)
- !! Schaltung und Anleitung ohne Gewähr !!
- Wer nicht selber zum Lötkolben greifen will oder kann findet z.B. bei Fuchs-Shop und 1-Wire auch fertige Produkte und Lösungen.
Jeder DS1820 Sensor hat eine eindeutige 64-bit Adresse. Mehrere Sensoren werden einfach parallel geschaltet.
Dadurch können wir mehrere Sensoren an einem seriellen Anschluß mit einer Schaltung betreiben.
Im Parasitic Mode wird der VDD (Pin 3) nicht benutzt und muss geerdet werden, auf GND schalten. (steht so im Datenblatt des DS1820)
In meinem Fall, mit bestehender Netzwerkverkabelung, habe ich die externe Schaltung in ein Patchpanel geschliffen und zu den entsprechenden Netzwerkdosen gepatcht und dort die Sensoren abgegriffen. Die Steuerung mit DigiTemp und grafische Auswertung der Sensoren übernimmt bei mir der vorhandene Ubuntu Nagios Server.
Installation und Konfiguration
DigiTemp ist als Paket für Ubuntu verfügbar
$ apt-get install digitemp $ dpkg -l | grep digitemp ii digitemp 3.5.0ds1-1 read temperature sensors in a 1-Wire net
Wir erstellen einen symbolischen link zu digitemp
$ ln -s /usr/bin/digitemp_DS9097 /usr/bin/digitemp $ ls -la /usr/bin/digitemp* lrwxrwxrwx 1 root root 15 2011-12-22 19:45 /usr/bin/digitemp -> digitemp_DS9097 -rwxr-xr-x 1 root root 59848 2008-08-20 12:46 /usr/bin/digitemp_DS2490 -rwxr-xr-x 1 root root 55696 2008-08-20 12:46 /usr/bin/digitemp_DS9097 -rwxr-xr-x 1 root root 63920 2008-08-20 12:46 /usr/bin/digitemp_DS9097U
Zuerst die ROM Werte der angeschlossenen Sensoren auslesen und die .digitemprc Datei erstellen lassen.
$ digitemp -s /dev/ttyS0 -i DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane GNU Public License v2.0 - <a href="http://www.digitemp.com/">http://www.digitemp.com Turning off all DS2409 Couplers Searching the 1-Wire LAN 10761954020800B1 : DS1820/DS18S20/DS1920 Temperature Sensor 100E25540208002D : DS1820/DS18S20/DS1920 Temperature Sensor 10A1A25302080049 : DS1820/DS18S20/DS1920 Temperature Sensor ROM #0 : 10761954020800B1 ROM #1 : 100E25540208002D ROM #2 : 10A1A25302080049 Wrote .digitemprc
Die erstellte .digitemprc Datei
TTY /dev/ttyS0 READ_TIME 1000 LOG_TYPE 1 LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C" HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%" SENSORS 3 ROM 0 0x10 0x76 0x19 0x54 0x02 0x08 0x00 0xB1 ROM 1 0x10 0x0E 0x25 0x54 0x02 0x08 0x00 0x2D ROM 2 0x10 0xA1 0xA2 0x53 0x02 0x08 0x00 0x49
Der erste Testlauf für Sensor 0, 10 Messwerte im 5 Sekundentakt.
$ digitemp -T0 -d 5 -n 10 DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane GNU Public License v2.0 - http://www.digitemp.com Dec 25 18:18:48 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:18:54 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:18:58 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:19:03 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:19:09 Sensor 0 C: 13.94 F: 57.09 Dec 25 18:19:13 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:19:18 Sensor 0 C: 13.88 F: 56.97 Dec 25 18:19:24 Sensor 0 C: 13.94 F: 57.09 Dec 25 18:19:28 Sensor 0 C: 13.94 F: 57.09 Dec 25 18:19:33 Sensor 0 C: 13.94 F: 57.09
Das Nagios script
#!/bin/bash temp=`/usr/bin/digitemp -t0 -d2 -n1 -q -c /etc/digitemp.conf -o%.1C` standort="Speicher" # den Messwert 85.0 rausfiltern und verwerfen, keine Ausgabe if [ "$temp" == "85.0" ] ; then echo # do nothing else status=0 echo "$status Temperatur_Sensor-0 Temperatur=$temp;35;50;0; $temp °C - $standort" fi
Hier noch ein paar Links zu Anleitungen und Schaltungen: