Sensorlogger

  1. Übersicht
  2. Installation & Start
  3. Konfiguration & komplettes Beispiel

Voraussetzungen

Vorausgesetzt wird ein System, das mindestens 64-Bit Integer-Datentypen (C++ uint64_t) unterstützt; normalerweise ist dies auch auf 32-Bit-Architekturen erfüllt, z.B. für den Raspberry Pi oder den Tinkerforge Red Brick. Anderenfalls zeigt der Sensorlogger undefiniertes Verhalten, weil UNIX-Zeitstempel mit Millisekundenauflösung gespeichert und verarbeitet werden müssen.

Bekannte Software-Voraussetzungen unter Linux:

Download

Die Software ist bei Github verfügbar, oder hier als Download.

Der Quellcode für den Sensorlogger steht unter der MIT-Lizenz. Im Folgenden wird gezeigt, wie kompiliert und installiert wird.

sensorlogger.tar.gz Version 1.1 / 331 KB

Für eine korrekte Funktionsweise kann keine Gewähr übernommen werden.

Installation

Zunächst müssen die Paho-MQTT-Bibliotheken für C und C++ installiert werden. Für Arch-basierte Linux-Distributionen existieren hier bereits fertige Pakete über das AUR: paho-mqtt-c-git und paho-mqtt-cpp-git. Für Debian-basierte Systeme (wie den Tinkerforge Red Brick) müssen wir die Bibliotheken selbst kompilieren und installieren. Hierfür werden einige Pakete vorausgesetzt:

apt-get install libssl-dev build-essential gcc make
apt-get install cmake cmake-gui cmake-curses-gui

Anschließend laden wir zunächst die Eclipse Paho MQTT C-Bibliothek, kompilieren und installieren sie entsprechend der Dokumentation:

git clone https://github.com/eclipse/paho.mqtt.c
cd paho.mqtt.c
make install

Nun folgt die Eclipse Paho MQTT C++-Bibliothek. Wenn auch die Dokumentation installiert werden soll bzw. die Beispiele kompiliert werden sollen, müssen die entsprechenden Flags hier in der dritten Zeile auf TRUE gesetzt werden.

git clone https://github.com/eclipse/paho.mqtt.cpp
cd paho.mqtt.cpp
cmake -Bbuild -H. -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=FALSE
sudo cmake --build build/ --target install
sudo ldconfig

Wir benötigen libcurl, um HTTP(s)-Verbindungen aufzubauen (für JSON-Strukturen, die von Webservern ausgelesen werden sollen, und zur Kommunikation mit einer HomeMatic-API).

apt-get install libcurl4

Außerdem werden die Entwicklungswerkzeuge für libcurl benötigt:

apt-get install libcurl-dev

Das virtuelle Paket libcurl-dev bietet verschiedene Implementierungen zur Auswahl. Alle sollten funktionieren; getestet wurde:

apt-get install libcurl4-gnutls-dev

Um den Sensorlogger per git herunterzuladen und zu kompilieren, genügt ein Aufruf von

git clone https://github.com/davidplotzki/sensorlogger
cd sensorlogger
make

Start

Beim Aufrufen kann der Pfad zu einer Konfigurationsdatei als Parameter übergeben werden:

./sensorlogger /home/username/my_sensors.json

Wenn keine Konfigurationsdatei übergeben wird, sucht das Programm nach einer Datei unter dem Namen sensorlogger.json im aktuellen Verzeichnis. Schlägt auch dies fehl, wird das Programm beendet.

Sensorlogger als Hintergrunddienst

Es wird empfohlen, den Sensorlogger mit beschränkten Nutzerrechten auszuführen. Die Einrichtung eines automatischen Starts beim Booten hängt von der Distribution ab. Für Debian/Raspbian könnte z.B. folgende Konfiguration für systemd verwendet werden, wenn sich die ausführbare Datei sensorlogger im Home-Verzeichnis des Benutzers unter /home/username befindet und dort auch eine Konfigurationsdatei namens config.json liegt.

# /etc/systemd/system/sensorlogger.service
# ------------------------------------------
# systemctl daemon-reload
# systemctl enable sensorlogger 

[Unit]
Description=Sensorlogger

[Service]
WorkingDirectory=/home/username
ExecStart=/home/username/sensorlogger /home/username/config.json
User=username
Group=users

[Install]
WantedBy=multi-user.target

Mit den folgenden beiden Befehlen würde man den Dienst anschließend laden und beim Start verfügbar machen:

systemctl daemon-reload
systemctl enable sensorlogger

Konfiguration & komplettes Beispiel>>