X-Git-Url: https://git.rohieb.name/stratum0-wiki.git/blobdiff_plain/0f4a26439f14920fdf5e6e30fc846d82d1f757f9..refs/remotes/origin/master:/Infodisplay.mw diff --git a/Infodisplay.mw b/Infodisplay.mw index 535807d25..428006908 100644 --- a/Infodisplay.mw +++ b/Infodisplay.mw @@ -1,59 +1,64 @@ {{Projekt -|kontakt=Kasa, larsan +|kontakt=drc |status=aktiv |beschreibung=S0 Infodisplay |bild=S0 Infodisplay.jpg |bildbeschreibung= Das Infodisplay im Flur des Spaces |interessenten= -|source=https://gitli.stratum0.org/kasalehlia/s0infodisplay/ +|source=https://gitli.stratum0.org/drc/python-infodisplay |lizenz= |download= |version= }} [[Datei:Bewegungsmelder am Infodisplay-Pi.jpg|thumb|Bewegungsmelder]] -Auf dem Serverschrank steht ein groÃer Full HD Fernseher, daran wurde eine Pi angeschlossen und ein bisschen [https://gitli.stratum0.org/kasalehlia/s0infodisplay/ Software] geschrieben. Zu guter letzt bekam der Pi einen Bewegungsmelder, sodass der Fernseher nicht 24/7 laufen muss. - -Auf dem Infodisplay stehen relevante Informationen zur Verfügung: -* Uhrzeit und auf welche Entität der Space derzeit geöffnet ist -* [https://maurudor.de/ Katzenbilder] -* Wetter -* Relative und absolute ÃPNV-Abfahrtszeiten von Haltestelle ''Hamburger StraÃe'', sowie ''LudwigstraÃe'' -* [[Kalender]] -* Visualisiert Stromverbrauch und Netzwerkdinge im Spacenetz -* IRC-Channel - -Das ganze ist derzeit auf Full-HD optimiert. Da die Software auf einer [http://infodisplay.local:8000 Webseite] basiert (im Fullscreen angezeigt, aus dem Space-Netz erreichbar), ist sie theoretisch auf auf mehreren Displays deploybar. - -== Setup == -Raspbian auf Raspberry Pi installieren. Dann: - -Pakete installieren: - sudo apt install git firefox-esr xserver-xorg-legacy xserver-xorg x11-xserver-utils cec-utils python3-rpi.gpio npm xinit - # oder auch 'firefox', je nach Verfügbarkeit - curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - - # oder was mittlerweile nach https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions aktuell ist - sudo apt-get install -y nodejs - -s0infodisplay macht lokal einen HTTP-Server und baut die HTML-Seite: - git clone https://gitli.stratum0.org/kasalehlia/s0infodisplay/ - cd s0infodisplay/ - npm install - NODE_ENV=production npm run build - -infopoint-html startet einen Firefox im Vollbild: - cd - git clone https://github.com/rohieb/infopoint-html.git - echo -e '#!/bin/sh\nexec /home/pi/infopoint-html/src/infopoint-html' | sudo tee /usr/bin/infopoint-html - sudo chmod +x /usr/bin/infopoint-html - echo 'URL="http://localhost:8000/"' | sudo tee /etc/default/infopoint-html - -systemd-logind session activation für den X-Server umgehen: - echo "allowed_users = anybody" | sudo tee /etc/X11/Xwrapper.config - -systemd-Services installieren: - sudo cp s0infodisplay/s0infodisplay.service s0infodisplay/pirscreencontrol.service infopoint-html/infopoint-html.service /etc/systemd/system/ - sudo systemctl daemon-reload - sudo systemctl enable s0infodisplay.service - sudo systemctl enable infopoint-html.service - sudo systemctl enable pirscreencontrol.service +Im Flur hängt ein groÃer Fernseher, der ein paar Infos anzeigt, die im Vorbeigehen interessant sein könnten, wie z.B. das Wetter drauÃen, die nächsten Termine im Kalender und die aktuelle CO2-Konzentration. + +Der Pi infodisplay.s0 am Display selbst zeigt dazu eine Webseite im Kioskmodus an. Die Webseite selbst ist auf http://ingodisplay.s0:8888/ gehostet. + +Das Display wird von einem Bewegungsmelder aufgeweckt. + +
#!/usr/bin/env python3 + +import RPi.GPIO as GPIO +import time +from subprocess import call +GPIO.setmode(GPIO.BCM) + +GPIO.setup(4, GPIO.IN) +#GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) +print("works so far") + +pir = 4 +previous_state = 0 +current_state = 0 + +try: + while True: + time.sleep(0.1) + current_state = GPIO.input(pir) + if current_state == 1 and previous_state == 0: + print("GPIO pin %s is %s, turning screen on" % (pir, current_state)) + call("echo on 0 | cec-client -s -d 1", shell=True) + previous_state = 1 + elif current_state == 0 and previous_state == 1: + print("GPIO pin %s is %s, turning screen off" % (pir, current_state)) + call("echo standby 0 | cec-client -s -d 1", shell=True) + previous_state = 0 + time.sleep(0.01) + +except KeyboardInterrupt: + pass +finally: + GPIO.cleanup() ++ + +== Ausrollen von Ãnderungen aus dem git == + +* Login auf ingodisplay.s0:
ssh stratum0@ingodisplay.s0
+* Auf Nutzer infodisplay wechseln: sudo -iu infodisplay
+* Ins Arbeitsverzeichnis wechseln: cd /opt/infodisplay/python-infodisplay
+* Aktualisierungen abrufen: git pull
+* Zurück zum Nutzer stratum0 wechseln: exit
+* Dienst neustarten: sudo systemctl restart infodisplay.service