Add speed.sh

This commit is contained in:
Patrick Schwarz 2020-01-03 22:42:08 +01:00
parent 987d44190d
commit f319563650
2 changed files with 56 additions and 0 deletions

View file

@ -1,2 +1,27 @@
# artnetonice
Using an LED strip over Art-Net to display status information from the WifiOnICE API
## Requirements
### Hardware
* Arduino Nano oder Klon
* Ethernet Shield mit ENC28J60. W5100 wäre noch viel besser, aber ich habe dafür kein einfach steckbares Shield gefunden.
* 5V, GND und Datenpin auf Kontaktleiste oder per Kabel auf Buchse herausführen, um die LED-Strip verbinden zu können
Ich habe die Strip softwareseitig auf 300mA beschränkt (mit ENC und Atmega sollten es etwa 500mA sein, aber Achtung: Muss nicht funktionieren) und betreibe den Strip direkt am USB-Port bzw. über ein USB-Netzteil.
Wird der Strip nicht per Art-Net angesprochen, läuft eine Default-Animation. Für diesen Zweck wäre eine Alternative auch, den Strip per Seriell über USB anzusteuern, Art-Net war jedoch flexibler nutzbar.
### Software
* jq
* ola (muss auf Universe 0 erfolgreich ausgeben), ggf. über die GUI unter http://localhost:9090
* Netzwerkverbindung zum ICE-WLAN mit erfolgter Authentisierung
* Netzwerkverbindung zum Art-Net-Node
#### speed.sh
Dieses Script zeigt die aktuelle Geschwindigkeit des ICEs auf der LED-Strip an. Beim ICE 4 wurde die Api etwa alle 5 Sekunden aktualisiert, jedoch wohl die Geschwindigkeit lediglich anhand der GPS-Position ermittelt und nicht aus den Fahrzeugdaten ausgelesen, denn ohne GPS-Signal war die Geschwindigkeit=0.
## Weitere Ideen
* Anzeige der Unterwegsbahnhöfe
* Anzeige der Verspätung
* Anzeige der aktuellen Position
* Überlagern der jeweiligen Anzeigen

31
speed.sh Normal file
View file

@ -0,0 +1,31 @@
speed=$(curl -s https://iceportal.de/api1/rs/status | jq -r .speed)
maxspeed=250.0
dots=60
color="0,255,0"
color_off="100,0,0"
result=$(echo "scale=2; $speed/$maxspeed*$dots" | bc | xargs printf %.0f)
offdots=$(expr $dots - $result)
echo Speed: $speed
echo Dots: $result
echo OffDots: $offdots
echo -n "">temp.dmx
while [ "$result" -gt 0 ]; do
echo -n $color >>temp.dmx
echo -n "," >>temp.dmx
result=$(( result - 1 ))
done
while [ "$offdots" -gt 0 ]; do
echo -n $color_off >>temp.dmx
echo -n "," >>temp.dmx
offdots=$(( offdots - 1 ))
done
exec ola_set_dmx -u 0 -d $(cat temp.dmx)