1-Wire Bus
Aus Hochschule Darmstadt - Fachschaft Informatik Wiki
Inhaltsverzeichnis |
[Bearbeiten] Was ist 1-Wire?
1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle, die mit einer Datenader (DQ) auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird. Der Begriff 1-Wire ist irreführend, weil zudem noch eine Masse-Verbindung (GND) erforderlich ist. Tatsächlich werden immer zwei physikalische Leiterverbindungen benutzt (GND, DQ).
Quelle: Wikipedia
[Bearbeiten] 1-Wire in der Fachschaft
Die Fachschaft baut gerade eine 1-Wire-Vernetzung in D14 auf.
Folgende Anwendungen gibt es aktuell:
- Tür-Sensor Fachschaftsraum
- Tür-Anzeige vor dem Fachschaftsraum und online
- Temperaturmessung Vorlesungsraum (derzeit in D14/4.04)
- Tür Status im JSON Format: [1]
Weitere Ideen:
- Wind und Regen-sensor zur Steuerung der Markise (Siehe auch [2])
- Tür fürs FS-Lager (so ne Art "Alarmanlage")
Im weiteren verlauf wäre es denkbar jeden Raum mit Tür- und Temperatur-Sensor auszustatten, wodurch sich z. B. leicht ein freier, offener sowie kühlen Raum zum Lernen zu finden ließe.
Bilder von dem Projekt gibt es online in der Gallery: Fachschaftsprojekte: 1-Wire
[Bearbeiten] Tür-Sensor und Tür-Anzeige
Problemstellung: ein Studi möchte wissen ob jemand in der Fachschaft ist oder nicht. Ein Riegelschaltkontakt im Türrahmen merkt ob die Tür zum Fachschaftsraum abgeschlossen ist oder nicht.
Den Zustand der Tür kann dann später einmal über eine Webschnittstelle oder gar Jabber-Bot abgerufen werden. Gleichzeitig zeigt eine LED direkt über der Tür an ob diese offen ist (LED leuchtet grün) oder nicht.
[Bearbeiten] Auswertung der Daten
Um die Sensoren, etc. Ansteuern zu können wird ein LinkHubE verwendet. Er ermöglicht den Zugriff auf die Daten mittels Ethernet über ein einfaches zeichenbasiertes Protokoll.
Der LinkHubE wird wiederum von OWFS (1-Wire File System) gesteuert, welches die Sensoren in Form von Dateien in einem virtuellen Dateisystems (FUSE) verwendbar macht.
Die Daten von OWFS werden dann mittels SNMP bereit gestellt und ausgewertet.
Die aktuellen Cacti Statistiken gibt es hier.
[Bearbeiten] Sensoren/Schalter
[Bearbeiten] Temperatur-Sensoren
- Chip (ID: 10.*): Maxim DS18S20 (Parasite-Power Digital Thermometer)
- Chip (ID: 28.*): Maxim DS18B20 (Programmable Resolution 1-Wire Digital Thermometer )
- Benötigte Pins:
- 4: GND
- 5: Data
- 7: 5V
| Raum | Dose | 1-Wire Patchpanel-Port | ID |
|---|---|---|---|
| 0.04 | D14/EG/01/A2 | D14/1.OG/03/B/6 | 28.93ED14030000 |
| 1.03 | D14/1.OG/02/H17 | D14/1.OG/03/B/4 | 28.F6CA14030000 |
| 1.04 | D14/1.OG/02/H7 | D14/1.OG/03/B/5 | 28.D7E514030000 |
| 1.11 | D14/1.OG/04/C4 | D14/1.OG/03/B/14 | 28.96BE14030000 |
| 1.12 | D14/1.OG/04/A4 | D14/1.OG/03/B/13 | 28.31F414030000 |
| 2.03 | D14/2.OG/01/P1/26 | D14/1.OG/03/A/3 | 28.0DBB14030000 |
| 2.04 | D14/1.OG/02/L25 | D14/1.OG/03/B/3 | 28.71FF14030000 |
| 2.10 | D14/2.OG/04/A23 | D14/1.OG/03/A/2 | 28.23F814030000 |
| 2.11 | D14/2.OG/03/16 | D14/1.OG/03/B/15 | 28.BAD814030000 |
| 3.03 | D14/1.OG/03/A26 | D14/1.OG/03/A/13 | 28.C7EC14030000 |
| 3.04 | D14/3.OG/01/A6 | D14/1.OG/03/A/12 | 28.46D014030000 |
| 3.10 | D14/3.OG/02/B23 | D14/1.OG/03/B/12 | 28.B0D214030000 |
| 4.03 | D14/1.OG/03/D32 | D14/1.OG/03/A/15 | 28.C2C414030000 |
| 4.04 | D14/1.OG/03/D24 (70cm) | D14/1.OG/03/B/2 | 10.CA2D72010800 |
| 4.04 | D14/1.OG/03/F20 (Decke) | D14/1.OG/03/A/4 | 10.C89F72010800 |
| 4.05 | D14/1.OG/03/E18 | D14/1.OG/03/A/14 | 28.C9D114030000 |
[Bearbeiten] 2956E905000000 - Tür-Sensor D14/2.10
- Chip: Maxim DS2408 (8-Channel Addressable Switch)
- PIO 0: Schalter in der Fachschaftsraum-Tür (ähnlich zu effeff Riegelschaltkontakt Modell 878) an 10k Pull-Up Widerstand (5V)
- PIO 1: N/C
- PIO 2: N/C
- PIO 3: N/C
- PIO 4: N/C
- PIO 5: N/C
- PIO 6: N/C
- PIO 7: N/C
- Benötigte Pins:
- 4: GND
- 5: Data
- 7: 5V
[Bearbeiten] 3ABE0F02000000 - Tür-LED D14/2.10
- Patchpanel: A/5
- Chip: Maxim DS2413 (Dual Channel Addressable Switch)
- PIO A: kaputt
- PIO B: Due LED Umschalter
- Benötigte Pins:
- 2: 12V
- 4: GND
- 5: Data
- 7: 5V
[Bearbeiten] Installation
[Bearbeiten] OWFS
aptitude install fuse-utils libfuse-dev build-essential cd /usr/local/src/ wget http://downloads.sourceforge.net/project/owfs/owfs/2.8p6/owfs-2.8p6.tar.gz tar -xzf owfs-2.8p6.tar.gz cd owfs-2.8p6 ./configure --disable-parport --disable-usb --disable-zero --disable-owftpd \ --disable-owhttpd --disable-owserver --disable-owtap --disable-owmon \ --disable-owcapi --disable-swig --disable-owperl --disable-owphp \ --disable-owpython --disable-owtcl --disable-owshell --disable-ownet \ --disable-ownetlib --enable-debian --enable-owfs --prefix=/usr/local make -j5 make install echo fuse >> /etc/modules modprobe fuse mkdir /mnt/owfs adduser --system --home /mnt/owfs --no-create-home --group --shell /bin/sh \ --disabled-password --disabled-login owfs chown owfs:owfs /mnt/owfs usermod -a -G fuse owfs sed -i 's/#\(user_allow_other\)/\1/g' /etc/fuse.conf echo "@reboot owfs /usr/local/bin/owfs --allow_other --LINK=141.100.40.99:10001 /mnt/owfs" > /etc/cron.d/owfs
[Bearbeiten] SNMP
Neben der "normalen" Konfiguration von snmpd wurden die 1-Wire-Sensoren wie folgt eingebunden. Das ganze ist absichtlich keine vollständige Lösung, da wir lieber auf die snmpd-Integration von owfs warten. Dennoch nutzen wir die OID von owfs. Sollte irgendwann eine smpd-Lösung kommen, müssen wir sowieso unsere Lösung umbauen..
# Prefix: iso.org.dod.internet.private.enterprise (1.3.6.1.4.1) # darunter: die ID des 1-Wire Devices in Decimal # darunter: .1 als unseren Prefix solange 1-Wire owfs kein snmp nutzt # darunter: .1 fuer PIO und .2 fuer sensed und .3 fuer temperatur # darunter: x => PIO-Nr bzw sensed-Nr bzw Temperatur-Nr bzw 0 fuer kein Index extend .1.3.6.1.4.1.33280.1.16.200.159.114.1.8.0.3.0 owfs /usr/local/sbin/owfs_snmpd 10C89F72010800/temperature extend .1.3.6.1.4.1.33280.1.41.86.233.5.0.0.0.2.0 owfs /usr/local/sbin/owfs_snmpd 2956E905000000/sensed.0
Das Skript /usr/local/sbin/owfs_snmpd ist auch sehr simpel:
#!/bin/bash VALUE=$(cat /mnt/owfs/$1) echo $VALUE
[Bearbeiten] Verbindung Tür-Schalter -> Tür-LED
Der Status des Riegelschalters wird für den LED Ausgang übernommen.
Ein kleines cron-Skript erledigt diese Aufgabe:
* * * * * owfs cat /mnt/owfs/29.56E905000000/sensed.0 > /mnt/owfs/3A.BE0F02000000/PIO.B
[Bearbeiten] Beteiligte Personen
Bei Interesse an dem Projekt mitzuarbeiten, oder auch nur bei allgemeinen Interesse/Fragen bitte melden.


