-
20.10.2017, 17:05 #1Projektleitung
- Registriert seit
- 15.11.2011
- Beiträge
- 8.443
- Blog Entries
- 5
Thanked 9.515 Times in 3.330 Posts
Event für Temperatur-Änderung von W1 Sensor in /sys/bus/w1/devices
Ich betreibe einen W1-Temperatursensor an einem Raspberry Pi. In der Datei /sys/bus/w1/devices/28-{Id}/w1_slave befindet sich die aktuelle Temperatur. Um diese auszulesen, müsste ich sie in einer Endlosschleife alle paar Sekunden auslesen. Das möchte ich vermeiden, da unschön und inperformant. Leider konnte ich keine Library finden, die mir eine Art OnTemperatureChangedEvent zur Verfügung stellt. Bin auf das Tool inotifywait gestoßen und wollte nun auf Änderungen dieser Datei reagieren.
Dazu habe ich folgendes Bash-Skript geschrieben:
Leider funktioniert es nicht: Skript wurde gestartet und der Sensor mit der Hand erwärmt. Die Temperatur hat sich verändert, wie man an der Datei selbst sieht von 24 auf 29 Grad:Code:#!/bin/bash sensor_class=28 sensor_id=<Id> sensor_slave_file=/sys/bus/w1/devices/${sensor_class}-${sensor_id}/w1_slave inotifywait -m $sensor_slave_file -e close_write | while read path action file; do temp_raw=$(cat $sensor_slave_file | grep 't=' | awk -F '=' '{print $2}') echo "Temp raw: $temp_raw" done
Am Skript liegt es nicht. Habe es mit einer selbst angelegten Datei versucht, die ich per echo füllte. Das klappte problemlos. Meine Vermutung ist, dass /sys/bus/w1/devices/28-{Id}/w1_slave keine richtige Datei im Dateisystem ist, sondern eine Art Pseudo-Datei. Der Pi schreibt die aktuelle Temperatur nicht hinein, sondern die Temperatur wird vom Sensor geladen, wenn ein lesender Zugriff stattfindet. Dies habe ich auch aus der Performance geschlossen: Das reine Ausgeben der Datei (cat) benötigt fast 1 Sekunde. Ich vermute, dass beim Ausgeben die Temperatur direkt vom Sensor abgefragt wird. Im Netz finde ich dazu nichts. Lediglich Varianten, die Pollen, z.B. per Cron.Code:pi@pi2:/sys/bus/w1/devices/28-<Id>$ cat w1_slave | grep t= 86 01 4b 46 7f ff 0c 10 f4 t=24375 pi@pi2:/sys/bus/w1/devices/28-<Id>$ cat w1_slave | grep t= d1 01 4b 46 7f ff 0c 10 39 t=29062
Gibt es keine Möglichkeit, dass mir der Sensor bei Temperaturänderungen ein Event feuert?
Ähnliche Themen
-
Welche Temperatur ist für den Prozessor am optimalsten?
Von Gameboy9 im Forum HardwareAntworten: 9Letzter Beitrag: 12.05.2014, 21:29 -
CPU und Core Temperatur weicht stark ab in Speedfan
Von Jokuu im Forum HardwareAntworten: 3Letzter Beitrag: 14.03.2014, 20:23 -
[Englisch] Stylistic Devices finden?
Von !lkay im Forum BildungAntworten: 1Letzter Beitrag: 05.11.2013, 06:47 -
[Tutorial] iOS 6 Jailbreak (nur A4 Devices)
Von Mr.Bombastic im Forum iOSAntworten: 11Letzter Beitrag: 23.10.2012, 20:01 -
Kinect Sensor - BILLIG?
Von Electro. im Forum Sonstige GamesAntworten: 3Letzter Beitrag: 18.02.2012, 21:52
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.
Zitieren