Chaospott Wiki

Wir sind da wat am dokumentieren dran...

Webseiten-Werkzeuge


projekte:infoscreen:start
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.


projekte:infoscreen:start [2021/01/21 16:45] (aktuell) – angelegt Bandie
Zeile 1: Zeile 1:
 +====== Infoscreen ======
 +
 +Der Infoscreen zeigt Dinge an. Darunter: Aktuelle Zeit, Raumstatistik, Abfahrtszeiten ÖPNV Essen Süd & Karolinenstr, aktueller Traffic, Wetter, sonstiger foo.
 +
 +
 +====== Hardware ======
 +
 +Der Infoscreen mit einem Raspberry Pi umgesetzt und als Anzeige dient ein altes 17" LCD, das über einen [[http://www.ebay.com/itm/HDMI-Male-to-VGA-RGB-Female-HDMI-to-VGA-Video-Converter-adapter-1080P-for-PC-new-/280964507216|Adapter aus China]] ans Pi angeschlossen ist.
 +
 +
 +====== Software ======
 +
 +Die Anzeige läuft als Webseite auf einem lokalen Server (apache2, /etc/apache2/ports.conf nur auf 10.0.0.2 konfiguriert) und läuft mit Chromium im Fullscreen. Die Daten werden von einem Python-Websocket-Server beschafft und stehen im lokalen Netzwerk überall zur Verfügung.
 +
 +Den aktuell laufenden Quelltext kann man von pi@infoscreen:infoscreen-live.git clonen. Wenn auf das Repository auf dem Infoscreen gepusht wird, startet sich der Server und Chromium automatisch neu.
 +
 +
 +====== Konfiguration ======
 +
 +
 +**Irgendwas ändern? Nicht in /var/www/infoscreen rumfummeln, das ist ein Git-Repository!**
 +
 +Lokale Änderungen sind und gehören in /etc/infoscreen.conf
 +
 +
 +====== API ======
 +
 +Die Daten, die auf dem Infoscreen angezeigt werden, stehen auch als Echtzeit-Rohdaten im lokalen Netzwerk zur Verfügung. Dafür einfach per [[http://de.wikipedia.org/wiki/WebSocket|WebSocket]]-Prokoll mit infoscreen:9000 bzw 10.0.0.4:9000 verbinden. Der Server sendet dann JSON-Objekte im folgenden Format:
 +
 +<code>
 +  {
 +    name: 'wetter', // Name des Datenmoduls
 +    time: 123.45,   // unixtimestamp-float des Events. (Achtung, die Uhr des Infoscreens spinnt gerne mal.)
 +    data: ...       // Daten in Eventabhängiger Syntax, siehe unten.
 +  }
 +</code>
 +
 +Beim Verbinden wird die letzte Nachricht von jedem Modul gesendet, anschließend bekommt ihr Daten, wenn der Server gerade an neue Daten kommt.
 +
 +Hier nun die Datenformate der einzelnen Datenmodule:
 +
 +
 +===== MPD =====
 +
 +Das Datenmodul <code>mpd</code> liefert den aktuellen Status unseres MPDs.
 +
 +<code>
 +  {
 +    repeat: false,    // True, wenn die Playlist geloopt wird.
 +    random: false,    // True, wenn die Playliste in zufälliger Reihenfolge wiedergegeben wird.
 +    state: 'play',    // play, stop oder pause
 +    elapsed: 13.37,   // Vergangene Sekunden des aktuellen Stücks
 +    current: { ... }, // Aktuell gespieltes Stück (Syntax siehe unten)
 +    next1: { ... },   // Nächstes Stück (funktioniert auch bei Zufallswiedergabe)
 +    next2: { ... }    // Übernächstes Stück (Funktioniert nur ohne Zufallswiedergabe)
 +  }
 +</code>
 +
 +Bitte beachte, dass <code>elapsed</code> nicht ständig aktualisiert wirst. Du kriegst das Objekt nur wenn sich einer der anderen Werte ändert, oder im Stück umhergesprungen wird.
 +
 +Und so sieht die Syntax eines Musikstücks aus:
 +
 +<code>
 +  {
 +    album: 'Machine Lullaby',       // Albumname (Kann auch mal fehlen, wenn schlecht getaggt)
 +    artist: 'Fear Of Ghosts',       // Interpret (Kann auch mal fehlen, wenn schlecht getaggt)
 +    title: 'Machine Lullaby Intro', // Stücktitel (Kann auch mal fehlen, wenn SEHR schlecht getaggt)
 +    hash: '...',                    // Eindeutige ID des Stücks (String der Syntax ^[a-zA-z0-9_-]$)
 +    time: 13.37,                    // Dauer des Stücks in Sekunden
 +    cover: '...' // (nur bei current) Albumcover, Bild vom Interpreten oder nocover.jpg (via last.fm-API)
 +  }
 +</code>
 +
 +
 +===== VRR-Abfahrtszeiten =====
 +
 +
 +Die nächsten Abfahrten an diversen Haltestellen hier in der Nähe. Realisiert über die API von derf0.
 +
 +Die Namen der Module lauten <code>vrr-sueds</code>, <code>vrr-moltke</code>, <code>vrr-karo</code> für die Haltestellen Essen Süd, Moltkestraße und Karolinenstraße.
 +
 +<code>
 +  [ // Liste bestehen aus mehreren Elementen der folgenden Form:
 +    {
 +      key: '...',                // Eindeutiger Key von genau dieser Fahrt dieser Linie
 +      line: '105',               // Linienname
 +      linetype: 'str',           // 3-Buchstabiger, str-aßenbahn, uba-hn, sba-hn oder bus
 +      lineroute: 'blabla',       // Routenbeschreibung
 +      dest: 'Essen Unterstr.',   // Zielhaltestelle
 +      time: '19:42',             // Uhrzeit, zu der die Bahn vorr. fährt
 +      delay: '5',                // aktuelle Verspätung in Minuten
 +      sched_time: '19:37',       // planmäßige Uhrzeit
 +      countdown: '42',           // Minuten bis zur vorraussichtlichen Abfahrt
 +      platform: 2,               // Bahnsteig/Bussteig
 +      info: 'Achtung Baustelle', // Aktuelle Informationen
 +      cancelled: False           // true, wenn die Fahrt ausfällt.
 +    },
 +    ... 
 +  ]
 +</code>
 +
 +
 +===== IRC =====
 +
 +
 +Unter <code>irc</code> findet sich ein aktueller Live-Feed aus unserem Channel #chaospott im hackint. Er nutzt dabei den selben BNC wie der IRC-Bot.
 +
 +<code>
 +  ['GlaDOS', 'The Cake is a lie.'] // Nick, Nachricht
 +</code>
 +
 +Bei Systemnachrichten (XY hat den Channel betreten etc.) ist das erste Element nur <code>'***'</code>, bei <code>/me</code>-Nachrichten ist der Nick mit in der Nachricht und das erste Element nur <code>'*'</code>
 +
 +
 +===== foobar-Raumstatus =====
 +
 +
 +Unter <code>raumstatus</code> findet sich der aktuelle Raumstatus der foobar.
 +<code>
 +  [true, '23:42'] // Ob die foobar offen ist und seit wann das so ist.
 +</code>
 +
 +
 +===== Wetter =====
 +
 +
 +Unter <code>wetter</code> werden die aktuellen Wetterdaten von draußen direkt vor unserer Tür geliefert. Quelle ist [[http://openweathermap.org|openweathermap.org]]
 +
 +<code>
 +  [
 +    'weather/night-fullmoon/weather-few-clouds.svg', // Pfad zu aktuellem Wettericon
 +    13,             // Temperatur in °C
 +    37.42,          // Windrichtung in °
 +    2.3,            // Windgeschwindigkeit in km/h
 +    1024,           // Luftdruck in hPa
 +    42,             // Luftfeuchtigkeit in Prozent
 +    '06:21 – 23:42' // Sonnenauf- und untergang
 +  ]
 +</code>
 +
 +
 +===== Geräte im WLAN =====
 +
 +
 +Unter <code>nmap</code> wird die aktuelle Anzahl Geräte im Raum geliefert. **Jetzt wirklich!**
 +
 +<code>
 +  [23] // Anzahl wie diskutiert
 +</code>
 +
 +
 +===== Aktueller Traffic im Netzwerk =====
 +
 +
 +Aktueller <code>traffic</code> auf unserem Netzwerk. Die Daten liefert der Router dem Infoscreen alle 10 Sekunden per collectd.
 +
 +<code>
 +  [1.23, 0.05] // Aktueller Down- und Upspeed in Mbit/s
 +</code>
 +
 +
 +===== Twitter =====
 +
 +
 +Aktuelle Tweets an oder von @foobarEv. Jede Nachricht ist eine Liste aus diversen Tweets, per default die der letzten Stunde, mindestens aber die letzten vier. Neue Liste kommt automatisch in Echtzeit, wenn ein Tweet dazu kommt.
 +
 +<code>
 +  [
 +    {
 +      'tid': 12345678,             // Tweet-ID
 +      'text': 'Dumdidldum',        // Tweet-Text
 +      'name': 'foobar e.V.',       // Name
 +      'screen_name': '@foobarEv',  // Screen
 +      'user_img': 'irgendwas.png', // Benutzerbild
 +      'media': 'fooo',             // Pfad zu getwittertem Bild oder null.
 +      'datetime': 'tolles format', // Datum und Uhrzeit in Menschenlesbarer Form
 +      'seconds': 314159265         // Timestamp des Tweets, glaub ich
 +    }, 
 +    […] // und noch mehr tweets…
 +  ]
 +</code>
 +
 +
 +===== Imagerotate =====
 +
 +
 +Hübsche Bilder, regelmäßig mal ein neues.
 +
 +<code>
 +  ['lalala.png'] // Pfad zum Bild
 +</code>
  
projekte/infoscreen/start.txt · Zuletzt geändert: 2021/01/21 16:45 von Bandie