Notiz zu Hardwaremodifikation am Mainboard des Anycubic Kobra Max in Vorbereitung...
[stratum0-wiki.git] / Infodisplay.mw
index 535807d..4280069 100644 (file)
@@ -1,59 +1,64 @@
 {{Projekt
 {{Projekt
-|kontakt=Kasa, larsan
+|kontakt=drc
 |status=aktiv
 |beschreibung=S0 Infodisplay
 |bild=S0 Infodisplay.jpg
 |bildbeschreibung= Das Infodisplay im Flur des Spaces
 |interessenten=
 |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]]
 
 |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.
+
+<pre>#!/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()
+</pre>
+
+
+== Ausrollen von Änderungen aus dem git ==
+
+* Login auf ingodisplay.s0: <code>ssh stratum0@ingodisplay.s0</code>
+* Auf Nutzer infodisplay wechseln: <code>sudo -iu infodisplay</code>
+* Ins Arbeitsverzeichnis wechseln: <code>cd /opt/infodisplay/python-infodisplay</code>
+* Aktualisierungen abrufen: <code>git pull</code>
+* Zurück zum Nutzer stratum0 wechseln: <code>exit</code>
+* Dienst neustarten: <code>sudo systemctl restart infodisplay.service</code>
This page took 0.029806 seconds and 4 git commands to generate.