X-Git-Url: https://git.rohieb.name/stratum0-wiki.git/blobdiff_plain/6e85c48b724998db5111a0cd9f9bab0906aa9f25..4f9e557c072312d13c72015537fb89ce45e969f8:/Infodisplay.mw diff --git a/Infodisplay.mw b/Infodisplay.mw index e9d5fa0fe..428006908 100644 --- a/Infodisplay.mw +++ b/Infodisplay.mw @@ -1,72 +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. +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. -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 +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 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 mehreren Displays deploybar. +Das Display wird von einem Bewegungsmelder aufgeweckt. -== Setup == -Raspbian auf Raspberry Pi installieren. Dann: +
#!/usr/bin/env python3
 
-Pakete installieren:
- sudo apt -y install git firefox-esr xserver-xorg-legacy xserver-xorg x11-xserver-utils python3-rpi.gpio python3-venv cec-utils xinit libicu-dev unattended-upgrades 
- # oder auch 'firefox', je nach Verfügbarkeit
- # 
- # ggf nötig, aber vermutlich nicht mehr, da libcec aus den repos wieder läuft und nicht mehr selbst gebaut werden muss:
- # sudo apt -y install cmake libp8-platform-dev libudev-dev
+import RPi.GPIO as GPIO
+import time
+from subprocess import call
+GPIO.setmode(GPIO.BCM)
 
-s0infodisplay macht lokal einen HTTP-Server und baut die HTML-Seite:
- git clone https://gitli.stratum0.org/kasalehlia/s0infodisplay/
- cd s0infodisplay/
- python3 -m venv env
- source env/bin/activate
- pip install -r requirements.txt
- # python3 main.py
+GPIO.setup(4, GPIO.IN)
+#GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+print("works so far")
 
-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
+pir = 4
+previous_state = 0
+current_state = 0
 
-systemd-logind session activation für den X-Server umgehen:
- sudo dpkg-reconfigure xserver-xorg-legacy   # hier dann die dritte Option, "Anybody", auswählen
+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)
 
-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
+except KeyboardInterrupt:
+    pass
+finally:
+    GPIO.cleanup()
+
-=== Troubleshooting === -* Wenn das Display mit einem schwarzen Rahmen angezeigt wird - sudo raspi-config - -> 7 Advanced Options -> A2 Overscan -> -== TODO == -* Mauszeiger wegbekommen (unclutter?) -* Energieverbrauchsanzeige reparieren (greift gerade noch auf einen externen, nicht mehr laufenden Server zu, könnte intern auf das Grafana auf der service-vm zugreifen -* Stärkeres Netzteil für den Pi -* SD-Karten-Verschleiß minimieren +== 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