1-Wire Bus

Aus Hochschule Darmstadt - Fachschaft Informatik Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K
Zeile 173: Zeile 173:
 
== Beteiligte Personen ==
 
== Beteiligte Personen ==
 
* [[Benutzer: Beetz | Sebastian Beetz]]
 
* [[Benutzer: Beetz | Sebastian Beetz]]
* [[Benutzer: Kriewitz | Frederik Kriewitz]]
 
* [[Benutzer: Weibler | Jens Weibler]]
 
  
 
Bei Interesse an dem Projekt mitzuarbeiten, oder auch nur bei allgemeinen Interesse/Fragen bitte melden.
 
Bei Interesse an dem Projekt mitzuarbeiten, oder auch nur bei allgemeinen Interesse/Fragen bitte melden.

Version vom 9. August 2014, 23:29 Uhr

Inhaltsverzeichnis

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

1-Wire in der Fachschaft

(thumbnail)
Tür Status

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

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.

Hardware

Der OneWire-Bus wird derzeit mit einem Raspberry Pi und einem LinkUSBi angesteuert.

Auf dem Raspberry läuft das OWFS OneWire File System, 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 werden demnächst wieder zur Verfügung gestellt.

Sensoren/Schalter

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 Status
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 (nicht vorhanden)
4.04 D14/1.OG/03/F20 (Decke) D14/1.OG/03/A/4 10.C89F72010800 (nicht vorhanden)
4.05 D14/1.OG/03/E18 D14/1.OG/03/A/14 28.C9D114030000

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

3ABE0F02000000 - Tür-LED D14/2.10

  • Patchpanel: A/5
  • Chip: Maxim DS2413 (Dual Channel Addressable Switch)
  • Benötigte Pins:
    • 2: 12V
    • 4: GND
    • 5: Data
    • 7: 5V

Installation

OWFS

Das OWFS wird auf Raspbian und seinen Varianten (Minibian, Raspbmc) als Paket über die Paketquellen bereitgestellt und kann wie folgt installiert werden:

aptitude install owfs

Wer es per Hand kompilieren möchte, macht es so:

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

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

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

Beteiligte Personen

Bei Interesse an dem Projekt mitzuarbeiten, oder auch nur bei allgemeinen Interesse/Fragen bitte melden.

Meine Werkzeuge