Add README.md and configuration sample.
This commit is contained in:
parent
20f6438343
commit
f50ac52cc1
2 changed files with 109 additions and 0 deletions
100
README.md
Normal file
100
README.md
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# s0_meter - Der Zähler für S0-Impulse an den RPi-GPIOs
|
||||
|
||||
## Funktion
|
||||
Das Programm s0_meter registriert alle an den configurierten RPi-GPIOs auftretenden Pegeländerungen, speichert diese intern in einer Liste und gibt diese über ein REST-API per HTTP-Request im JSON-Format aus.
|
||||
|
||||
Das Programm zeichnet alle registrierten Pegeländerungen auf. Eine eventuell notwendige Entprellung der Pulse muss der Client-Applikation erfolgen.
|
||||
|
||||
## Installation
|
||||
Das Programm s0_meter kann in ein beliebiges Verzeichnis abgelegt werden.
|
||||
|
||||
## Konfiguration
|
||||
### GPIOs
|
||||
Die Konfiguration der S0-Kanäle und der zugehörigen RPi-GPIOs erfolgt in einer Konfigurationsdatei mit folgendem Format:
|
||||
```
|
||||
[[channel]]
|
||||
id = 1
|
||||
gpio = 17
|
||||
|
||||
[[channel]]
|
||||
id = 2
|
||||
gpio = 12
|
||||
```
|
||||
Für jeden Kanal wird die Kanal-ID und die Nummer des RPi-GPIO angegeben. Die Kanal-IDs sind frei wählbar und müssen nicht fortlaufen sein. Für die RPi-GPIOs muss die Nummer angegeben werden, die am RPi-Pfostenstecker steht.
|
||||
|
||||
Standardmäßig wird die Konfigurationsdatei `/etc/s0_meter.cfg` gelesen. Mit dem Kommandozeilenparameter `-c` kann eine andere Datei angegeben werden.
|
||||
## Kommandzeilenargumente
|
||||
Die möglichen Kommandozeilenargumente können wie folgt ermittelt werden:
|
||||
```
|
||||
$ ./s0_meter --help
|
||||
s0_meter 0.1.0
|
||||
Harald Kube <harald.kube@gmx.de>
|
||||
Listen for S0 pulses at the given GPIO pins
|
||||
|
||||
USAGE:
|
||||
s0_meter [OPTIONS]
|
||||
|
||||
FLAGS:
|
||||
-h, --help Prints help information
|
||||
-V, --version Prints version information
|
||||
|
||||
OPTIONS:
|
||||
-c, --config <config> The name of the config file (default: /etc/s0_logger.cfg)
|
||||
```
|
||||
## Beenden des Programms
|
||||
Das Programm kann beeendet werden indem z. B. das Signal TERM geschickt wird.
|
||||
```
|
||||
# kill -TERM <PID des Programms>
|
||||
```
|
||||
## REST-API
|
||||
### Zugang
|
||||
Das REST-API ist nur vom localhost unter Port 6310 erreichbar.
|
||||
### Format
|
||||
Über das HTTP-Protokoll lassen sich vom REST-API folgende Informationen auslesen:
|
||||
#### Abfrage der Kanal-IDs:
|
||||
```
|
||||
# curl http://localhost:6310/v1/channels
|
||||
```
|
||||
Antwort:
|
||||
```
|
||||
{
|
||||
"channels" : [
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
#### Abfrage der Pulse für den S0-Kanal mit der ID 2:
|
||||
```
|
||||
# curl http://localhost:6310/v1/channel/2
|
||||
```
|
||||
Antwort:
|
||||
```
|
||||
{
|
||||
"channel" : 2
|
||||
"pulses" : [
|
||||
{
|
||||
"channel_id" : 2,
|
||||
"timestamp_ns" : 543838417704
|
||||
"level" : false,
|
||||
},
|
||||
{
|
||||
"channel_id" : 2,
|
||||
"timestamp_ns" : 543917859198,
|
||||
"level" : true
|
||||
}
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
Die Pulse müssen für jeden konfigurierten Kanal einzeln abgefragt werden.
|
||||
Für jeden Änderung des Eingangspegels am GPIO wird ein Datensatz zurückgegeben der folgende Informationen enthält:
|
||||
| Name | Inhalt |
|
||||
| ------------ | ---------------------------------------------------------------------- |
|
||||
| channel_id | Die ID des Kanals |
|
||||
| timestamp_ns | Der Zeitpunkt des Pegeländerung seit dem Programmstart in Nanosekunden |
|
||||
| level | Der neue Pegel am GPIO |
|
||||
|
||||
Es sollten sich die Pegel in den aufeinanderfolgenden Datensätzen immer abwechseln - also: true -> false -> true. Wenn aber Pegeländerungen sehr schnell hintereinander auftreten kann es vorkommen, dass zwei oder mehrere Datensätze mit gleichen Pegeln existieren - z. B.: false -> false. Dann war dazwischen ein sehr kurzer High-Puls, der nicht aufgezeichnet wurde.
|
||||
|
||||
**Achtung:** Die Pulse können nur ein Mal abgefragt werden da sie nach der Abfrage gelöscht werden!
|
||||
9
bundle/s0_meter.cfg.sample
Normal file
9
bundle/s0_meter.cfg.sample
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Configuration of s0_meter
|
||||
# List all input channels with their id and their RPi-GPIO pins
|
||||
[[channel]]
|
||||
id = 1
|
||||
gpio = 17
|
||||
|
||||
[[channel]]
|
||||
id = 2
|
||||
gpio = 12
|
||||
Loading…
Add table
Reference in a new issue