Für die Abfrage der Daten existiert im Verzeichnis tools/iio der Linux-Sourcen ein Hilfsprogramm namens iio_generic_buffer. Diesem wird mitgeteilt, von welchem Device mit welchem Trigger welche Daten wie häufig abgefragt werden. Nachfolgendes Beispiel zeigt, wie man hrtimer-Events aus dem Userspace heraus verwendet:
root@waage: cd /sys/kernel/config/iio/triggers/hrtimer root@waage: mkdir mytmr
Bildergalerie
root@waage: cd /sys/bus/iio/devices/trigger0 root@waage: echo 1 > sampling_frequency
iio device number being used is 1 iio trigger number being used is 0 /sys/bus/iio/devices/iio:device1 mytmr 10.062591 1511821230327326320 11.024664 1511821231327324360 10.025594 1511821232327323800
Zunächst wird der hrtimer-Trigger generiert. Dies erfolgt im configfs durch Anlegen eines neuen Verzeichnisses. Als Name dafür wurde im Beispiel mytmr gewählt. Handelt es sich um den ersten angelegten Trigger, dann hat dieser die Nummer 0.
Im sysfs ist ein neues Device-Verzeichnis mit dem Namen trigger<T> entstanden, wobei T die Nummer des Triggers ist. In diesem Verzeichnis kann der Trigger parametrisiert werden. In obigem Beispiel wird die Frequenz auf 1 Hz eingestellt. Im Verzeichnis scan_elements können die einzelnen Kanäle sowie der Timestamp aktiviert werden.
Die Datenabfrage erfolgt mit dem Programm iio_generic_buffer. Es werden die voreingestellten Kanäle 3-mal (-c 3) vom Device mit der Nummer 1 (-N 1) unter Verwendung des Triggers mit der Nummer 0 (-T 0) abgefragt. Angezeigt werden in obigem Beispiel der Rohwert multipliziert mit dem Skalierungsfaktor (aus Datei involtagescale) in der ersten Spalte und der Timestamp in Nanosekunden in der zweiten Spalte.
Datenabfrage im Userspace
Sollen die durch einen Trigger generierten und gepufferten Daten durch eine Userspace-Anwendung abgefragt werden, kann dies durch Auslesen des Device-Nodes (/dev/iio:device<N>) erfolgen, wobei <N> wieder die Nummer des Devices ist.
Diese Daten stehen in dem Device-Node binär drinnen und können mithilfe eines kleinen C-Programmes in ASCII gewandelt und ausgegeben werden. Wie die Daten binär zu interpretieren sind, ist im Verzeichnis scanelements dokumentiert. Beispiel:
root@waage: cd /sys/bus/iio/devices/iio:device1/scan_elements
root@waage: cat in_voltage0_type le:u24/32>>0
root@waage: cat in_voltage0_index 0
So besagt dieses Beispiel, dass der Spannungswert des Kanales 0 little-endian-codiert, unsigned 24 Bit groß ist und in einem 32-Bit-Feld ohne Bit-Shifting drinnen steht. Der Wert wird als erstes geliefert (in_voltage0_index == 0). Mit diesen Informationen ist es ein leichtes ein eigenes Programm zu schreiben, welches die gepufferten Daten ausliest und korrekt interpretiert.
Userspace-Libraries
Das IIO-Subsystem ist, wie oben ausgeführt, sehr systematisch nach bekannten und dokumentierten Regeln aufgebaut. Dass dies so bleibt, darüber wachen die Reviewer und der Maintainer. Bevor neue Definitionen verwendet werden, wird versucht, neue Treiber in die bestehenden Interfaces zu integrieren.
Am Framework angemeldete IIO-Geräte werden in der Reihenfolge der Anmeldung durchnummeriert. Dies erfordert vom Userspace-Entwickler, dass er den Zusammenhang zwischen Device-Nummer und dem gewünschten Treiber herstellen kann. Er muss die Devices im sysfs durchlaufen und anhand des Attributes name den betreffenden Treiber erkennen. Analog dazu funktioniert die Erkennung von Trigger-Events.
Dies ist mühsame Routine und kann aufgrund der Systematik von IIO gut auf eine Library ausgelagert werden. Die libiio ist genau dafür erschaffen worden. Mit ihr kann gut automatisiert werden:
Verbindung zu lokalem oder entferntem IIO-Subsystem, auf welchem der iiod-Dämon läuft
Abfrage der vorhanden Devices
Kanäle und Attribute durchiterieren
Lesen und Schreiben von Attributen
Auswertung der Bienenwaage
In Bild 5 ist der Temperatur- sowie Gewichtsverlauf im Zeitraum einer Woche aufgezeichnet. Zur Auswertung wurde GNUPlot verwendet. Aus dem Diagramm kann ausgelesen werden:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Bild 5: Auswertung von gemessenen Daten mittels GNU-Plot
(Bild: Klinger)
[07.-09.05.] Bei Regenwetter und Temperaturen unter 12°C findet kein Ausflug statt -> Honig wird verbraucht.
[10.05.] Um 12:00 Uhr fliegt Bienenschwarm von ca. 1000 g Gewicht innerhalb weniger Minuten ab.
[11.-12.05.] Bienen tragen Nektar bei Temperaturen über 12°C ein.
[13.05.] Manueller Eingriff des Imkers führt zu Gewichtsveränderungen.
Verweise und Link zum Autor
- Sourcen der in Artikel verwendeten Treiber finden sich im Kernel-Source-Tree in den Unterverzeichnissen: drivers/iio/adc/hx711.c drivers/iio/pressure/bmp280*.c
- Kernel-Mailing-Liste für das Industrial-IO-Subsystem: linux-iio
* Andreas Klinger ist selbständiger Linux-Trainer und Referent der Embedded Linux Woche sowie Gewinner des Best Speaker Awards auf dem ESE Kongress. Er ist als Bio-Landwirt und Imker im Nebenerwerb tätig.