Beamertool / Lasersim für Raspberry Pi - Support Thread

  • Das mit den 3 Videos liegt daran, dass man für die Videowiedergabe eine C API mit Multithreading und jeweils eigener static Callback Funktion aufrufen muss. Deswegen kann man den Videoplayer leider nicht in eine Klasse packen und mehrfach instanzieren (habs zumindest noch nicht hinbekommen), sondern muss den Videoplayercode jeweils kopieren und mehrfach die gleiche Funktion im Code haben. Da man so bei einer Codeänderung das ganze gleich an mehreren Stellen korrigieren muss hab ich das mal wilkürlich auf 3 festgelegt um das ganze jetzt erstmal zu testen. Sollte alles funktionieren kann man mit copy paste und Nummerierung hochzählen die Zahl der Videoplayer erhöhen (z.B 10 viel mehr macht wahrscheinlich aus Performancegründen nicht Sinn). Um die Videoplayer herum gibt es einen Wrapper der die Verteilung der Texturen auf die einzelnen Player übernimmt. (Der Zeigt dann auch die Fehlertextur an wenn gerade alle Player belegt sind.)

    Das die Texturen im Moment noch alle beim Start geladen werden hat einen anderen Grund. Ich habe versucht das ganze so Modular wie möglich aufzubauen um das ganze leicht erweitern zu können. Die verschiedenen Laserinstanzen hab ich zu Zeichenflächen (Canvas) abstrahiert, und einen Content Manager hinzugefügt der beliebige Content Plugins verwaltet. (Plugin Schnittstelle gibt es noch nicht wirklich, im Moment sind das jeweils alles C++ Klassen). Im Moment gibt es nur das Content Plugin das lokale Texturen verwaltet, aber ich könnt mir z.B irgendwann mal ein Plugin vorstellen das Videostreams empfangen kann oder so.
    Das laden der Texturen erst bei Bedarf wäre zwar mit ganz wenigen Zeilen erledigt, aufwendig wird aber das wieder freigeben der Texturen. Die Plugin Schnittstelle wollte ich zum einen so schmal wie möglich halten, sonst müsste man durch diese Schittstelle eine Liste mit allen Momentan benötigten Texturen verwalten, was die Abstraktion und Abkapselung nicht mehr ganz so schön macht.
    Das größere Problem daran wäre wenn man z.B den Fall hat wenn man in kurzer Zeit zwischen mehreren Texturen wechselt werden diese dauernd geladen und wieder gelöscht. Meine bevorzugte Lösung bzw. mein Plan ist deswegen eine Art Garbage Collector einzusetzten der alle Texturen die z.B. in den letzten 3 Sekunden nicht benötig wurden zu löschen. Dazu werd ich aber sicher noch einige Zeit benötigen und solange die Texturen nicht dynamisch gelöscht werden macht es auch wenig Sinn diese Dynamisch zu laden. (Im schlimmsten Fall stürzt das Beamertool sonst nach 5h Laufzeit ab, weil man dann in der Liveshow eine Textur zu viel aufruft, deswegen solange es keinen Garbage Collector gibt lieber erstmal alle laden, dann stellt man Probleme wenigstens gleich fest (ist auch besser für den Beta Test :-)))

    Die Modularisierung hab ich auch für den Empfang vorgesehen (noch nicht so weit wie die Content Modularisierung) um z.B. ein OSC Receiver Plugin einzubauen um langfristig weitere Features des Windows Beamertools einzubauen, insbesondere mit dem Ziel Kompatiblität zu DMXC3 oder einem zukünftigen DMXC3 Beamertool.

    Im Zuge der Modularisierung hab ich auch den Namen von "Lasersim" zu "RPI_Beamertool" geändert. Ich hoff mal das gibt keinen Namenskonflikt zum "richtigen" Beamertool.

    mfg
    Moritz

  • Hi!

    Nachdem bei mir der Postbote auch vor ein paar Tagen endlich einen Raspberry abgeliefert hat, werde ich mir das auch mal anschauen. Muss aber erstmal mit dem neuen Freund bekannt werden... :)
    Aber auch wenn ich momentan wenig Zeit dafür habe, schon ein wirklich sehr schönes "Spielzeug"!

    Und wenn jetzt auch Videos gehen, dann wirds perfekt für meine "Spielshowanwendung". ;)

    Hoc

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

  • neue Version 0.3.2

    Kleineres Update zum beheben des ArtPollReply Problems. Jetzt sollte beim Starten und beim Empfang einer ArtPoll ein korrektes ArtPollReply Paket gesendet werden. Die ArtPollReply wird jetzt der ArtNet Spezifikation entsprechend als Broadcast gesendet (vorher wurde nur dem Client geantwortet der die ArtPoll gesendet hat), das hat im Moment jedoch noch zur Folge, dass das Senden nur über eth0 also den Kabelanschluss funktioniert.
    (Der Empfang von DMX Daten ist unabhängig davon und sollte über alle Netzwerkinterfaces funktionieren.)

    Der Hauptgrund für dieses Update sind einige interne Umstellungen zum Sortieren des Projektverzeichnisses. Dazu hab ich mich entschlossen die Versionsverwaltung git einzusetzten und das Projekt auf bitbucket zu stellen.
    Den Sourcecode gibt es damit ab sofort hier:
    https://bitbucket.org/moritzh/rpi-beamertool/
    Wenn jemand Änderungen, Anpassungen oder Erweiterungen macht freue ich mich über Rückmeldung, gerne als Pull Request, sonst aber auch per Mail oder hier im Forum, um es in die "Hauptversion" einzubauen.

    ebenso gibt es auf bitbucket einen Bugtracker:
    https://bitbucket.org/moritzh/rpi-be…new&status=open
    Alle Fehler, Probleme oder Erweiterungsvorschläge können ab jetzt dort eingetragen werden. (auch ohne Anmeldung möglich)

    Veröffentlichungen von kompilierten Versionen git es weiterhin hier im Forum.

    mfg
    Moritz

    PS:
    Als nächstes steht auf meiner todo Liste das Anpassen von zoidbergs Installationsscript, sodass eine einfache Installation möglich ist.
    Leider scheint nach meinen Anpassungen irgendwas nicht zu funktionieren, der Rasperry Pi hängt sich im Autostart auf.

    zoidberg (oder andere Linux Profis)
    Warum machst du den Autostart so wie er im Installscript ist? Bzw. was genau mach dein Script da?
    Warum nicht dein erster aus meiner sicht einfacher zu verstehende Vorschlag mit dem Eintrag in die rc.local?

  • Hallo Moritz,

    rc.local wird asynchron beim Bootprozess gestartet. Es kann also passieren, dass das Netzwerk nicht sauber initialisiert ist und das Programm dann schon startet.
    Die Änderung in /etc/inittab bewirken das der User pi automatisch angemeldet wird (nach dem Bootprozess). Dabei wird das Script .bashrc im Home des Users ausgeführt.
    Ich bin ziemlich begeistert von der Weiterentwicklung :)

    Grüße
    zoidberg

    Ein Programm macht nicht was Du willst, sondern was Du schreibst!

  • Danke.
    Ich habs jetzt nochmal von Hand getestet und es funktioniert. Werd wohl irgendwas falsch geschrieben haben beim ändern von lasersim in rpi-beamertool im Install-Script. Ich hab nur einen Nachteil bei dieser Methode festgestellt: .bashrc wird bei jedem Login ausgeführt, also auch beim Login über ssh. So wird mehrfach versucht das Programm zu starten. Das ist zumindest zum Debuggen ungeschickt. Einen wahrscheinlich nicht ganz so schönen dafür einfachen Workaround hab ich hier gefunden: http://wiki.ubuntuusers.de/rc.local#Problembehebung werde mal testen ob das so dann praktischer läuft.

    mfg
    Moritz

  • Installer für Version 0.3.2

    Ich hab zoidbergs Installationsscript mal an die aktuelle Version angepasst.

    Für nicht Linux erfahrene ist damit folgende Schritt für Schritt Installation möglich:
    Achtung: Das Installscript verändert Systemeinstellungen, wenn ihr den Raspberry Pi noch für etwas anderes als das Beamertool verwendet, kann es zu Problemen und Datenverlust kommen. Verwendet am Besten eine extra SD Karte. (für Details was das Script verändert siehe PS)

    Das Installscript ist nur für eine Neuinstallation gedacht, ein Update einer bestehenen Installation ist nicht möglich. Das Installationsscript nur einmal ausführen!

    1. Raspbian installieren: (siehe: http://www.raspberrypi.org/downloads)
    2. Tastatur anschließen (alternativ per SSH einloggen)
    3.

    Code
    sudo raspi-config


    eingeben (erscheint beim ersten einschalten automatisch)
    4. Expand Filesystem wählen.
    5. Advanced Options -> Memory Split wählen: auf 128 (Modell A oder B Rev.1) oder 265 (Modell B Rev.2) ändern
    6. Finish und reboot wählen
    7.

    Code
    wget http://raspbeam.dmxcontrol.de/install.sh
    sudo bash install.sh


    eingeben
    8. Das Installationsscript stellt mehrere ja/nein Fragen im Zweifel immer ja wählen (Das Script macht ein Systemupdate und läuft deswegen einige Minuten)

    Fragen des Installscripts:
    Samba installieren? (der Zugriff auf die config Datei und die Texturen ist über die Windows Dateifreigabe möglich)
    Webinterface installieren (Zugriff auf das Webinterface ist im Browser über http://HOSTNAME/ möglich)
    Hostname ändern? (das ist der Name den man in der Dateifreigabe in Windows sieht und über den man auf das Webinterface zugreift.)
    Reboot? (Jetzt neustarten. Das Beamertool läuft erst nach einem Neustart.)

    Fertig! :)

    Das rpi-beamertool läuft jetzt automatisch bei jedem Einschalten. Das rpi-beamertool ist im Ordner /opt/rpi-beamertool installiert (wenn samba installiert ist zugriff über Windows Dateifreigabe möglich) Steuern über das Webinterface http://HOSTNAME/ (wenn installiert)


    mfg
    Moritz

    PS:
    Details zum Installationsscript:
    - es wird ein Systemupdate durchgeführt.
    - die rpi-beamertool Dateien werden heruntergeladen
    - Das Installscript setzt das rpi-beamertool in den Autostart
    - mediainfo wird installiert
    - (optional) samba wird installiert und eine Freigabe für den rpi-beamertool Ordner eingerichtet
    - (optional) apache2 und php5 wird installiert. Sämtliche index.* Dateien werden gelöscht
    - (optional) der Hostname wird geändert

    Edited 3 times, last by Moritz: Downloadlink aktualisiert (April 27, 2017 at 1:41 PM).

  • Hi!

    Der Installer läuft gerade! :)
    Kleiner Tipp noch: Wenn man schon in den Einstellungen ist: Tastaturlayout nach "German" ändern. ;) Sonst ärgert man sich erstmal warum das blöde Passwort schon wieder nicht funktioniert weil y und z verdreht sind.

    Bin gespannt wie's weitergeht. Vielen Dank für dieses tolle Projekt hier!!!

    Hoc

    PS:
    Es läuft! Super!!
    Nachdem mein bisheriger Beamertool-Wiedergabe-Laptop nämlich den VGA-Ausgang nimmer betreiben will hab ich nun endlich wieder was schnelles, mobiles zum spielen! :D

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

    Edited once, last by Hoc (January 26, 2014 at 5:39 PM).

  • Hi!

    Bevor ich da unnötig einen Bugtracker dafür aufmache: Ich glaube das war beim "normalen" Beamertool schon so, dass man Probleme hatte eine Textur wieder auf "0" zu drehen, oder?
    Ich bekommen meine Sachen nimmer gerade. Er dreht wunderbar von 1-255, aber den Wert 0 ignoriert er.

    Hoc

    PS:
    Zu den animierten Gifs:
    Sensationell! Habe gerade eine Seite mit sehr schönen Testbildern gefunden: http://www.webdesignerdepot.com/2013/04/innovative-animated-gifs/ (Für Projektion, eher nicht für den Nebel ;))
    3 davon jeder in einem Layer, relativ klein aber dafür 5-8mal vervielfacht und in allen beiden Möglichkeiten durch Autorotation drehen lassen: Kein Problem! :D
    Bin schwer begeistert sowohl vom Rasp als auch von dieser Beamertool-Umsetzung! Weiter so! 8)

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

    Edited once, last by Hoc (January 26, 2014 at 6:59 PM).

  • Mit auf "0" drehen meinst du den Gobo Kanal oder?
    Ich habs gerade nochmal probiert und es gieng ohne Probleme bei mir, einfach eine 000.png in den Texturen Ordner packen. Das Tool schaut für alle Zahlen von einschließlich 0 bis einschließlich 255 ob eine Texturendatei da ist, wenn ja wird die genommen, wenn nicht bleibt die Textur leer.
    Hab auch nochmal in den Code geschaut, es gibt dort keine Sonderbehandlung für den Fall "0".

    Edit:
    Beim nochmal durchlesen merk ich gerade, es macht glaub ich mehr Sinn "drehen" wörtlich zu nehmen :) (Ja ist schon spät)

    Die Berechnungen der Drehungen sind aus dem Windows Beamertool übernommen. Bei Werten von 1-255 hat die feste Drehung priorität. Bei 0 gilt die Einstellung der automatischen Drehung. Diese lässt sich mit Wert 127 zurücksetzten.
    Hier der entsprechende Code Auszug mit der Berechnugsformel:

    mfg
    Moritz

    Edited once, last by Moritz (January 27, 2014 at 2:00 AM).

  • Hi!

    :) Äh, ja, genau das meinte ich. Da war doch was.....
    Und genau der 127er-Wert war mir nicht mehr in Erinnerung. Muss ich nachher mal testen. Evtl. wäre ja mal eine Änderung im DDF nicht schlecht mit einer "Resetbutton"-Funktion dafür. Mal sehen.

    Danke,
    Hoc

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

  • Evtl. wäre ja mal eine Änderung im DDF nicht schlecht mit einer "Resetbutton"-Funktion dafür.

    hmm, macht sinn. Bei der Gelegenheit sollten wir auch Panfine und Titlfine vorsehen.

    Grüße
    zoidberg

    Ein Programm macht nicht was Du willst, sondern was Du schreibst!

  • So...hatte endlich wieder Zeit...

    Installscript läuft super! Werde jetzt noch meine anderen zwei raspis installieren und dann gehts ans Testen.

    Am Samstag gibts dann noch einen Livetest mit drei Beamern.

    LG Denny

  • Moin
    Ich hab jetzt auch endlich mal zeit gefunden mich mit dem Beamertool näher auseinander zu setzen...

    Erstmal großes lob!
    Alleine die Installation ging sehr schön einfach (dauerte nur mal eben 3,5 h...)
    Die Ruckelfreien bewegungen sind ja der Wahnsinn!! Hätte ich dem kleinen Pi niemals zugetraut...

    Jetzt noch nen paar kleine fragen:
    Wie kann ich neue .gif s beim beamertool implementiert? Kopieren in den Ordner ist ja nicht das Problem...
    2. Könntet ihr im Webinterface vlt. Noch einrichten dass man die Dmx Startadresse andern kann?
    3. Mit dem Windows Beamertool kann man doch angeblich auch Videos abspielen (hab niemals rausgefunden wie). Gibts da irgendeine Möglichkeit mit einzubauen?

    Gruß
    Nutzer99

  • nutzer99:
    Danke für das Lob.
    Was zählst du denn alles zur Installation dazu? Ich hoffe bei den 3,5 Stunden zählst du das komplette erste Einrichten des Raspberry Pi's dazu inklusive Raspbian Installation und alles mal durchtesten. Sonst käm mir das arg lange vor. Falls nicht was hat am längsten gedauert? Dann kann man die Anleitung hier noch etwas genauer schreiben wenn es Probleme gab.

    Was verstehst du unter gif's implementieren? Neue gif Dateien erstellen oder die gif Dateien beim Beamertool hinzufügen. Eigentlich reicht in den Texturen Ordner kopieren und die gifs sollten laufen.

    Wenn du Samba bei der Installation mitinstalliert hast findest du in der Windows Dateifreigabe den Beamertool Ornder, in dem neben den Texturen auch eine config Datei ist. Dort kann man die Startadresse sowie einige andere Einstellungen ändern. (Änderungen werden erst nach Neustart des Beamertools wirksam) Die Startadresse über das Webinterface änderbar machen ist glaub ich leider keine kleine Aufgabe, darum wird es das so schnell nicht geben, aber ich schreib es gerne auf die TODO Liste für eine spätere Version.

    Videos werden vom Raspberry Pi Beamertool auch unterstützt, jedoch mit Einschränkungen:
    -die Videos müssen im h264 Format vorliegen
    -es sind aktuell nur 3 Videos möglich
    -die Videofunktion ist noch im Teststadium (sollte eigentlich funktionieren, bin aber selber noch zu keinem Langzeittest gekommen)
    weitere Details dazu stehen in Beiträgen weiter oben


    @all:
    Da grade wieder Prüfungszeitraum ist, hab ich die Weiterentwicklung pausiert und schau grad auch nur selten hier vorbei. Sollte aber im Sommer irgendwann wieder was neues zum Raspberry Pi Beamertool geben und ich schreib bei Fragen gern zurück auch wenns dann etwa dauert.

    Hat schon jemand Erfarungen mit der Video Funktion? Habt ihr irgendwelche Probleme festgestellt?

    mfg
    Moritz

  • Moin Moritz,

    Also zur Installation: Das einrichten ging fix (hab ich aber auch öfter schon gemacht). Die Reine Installation mit Download und allem drum und dran hat um die 3 bis 3,5 h gedauert bei einer Downloadgeschwindigkeit von durchschnittlich 200 Kb/s.
    Ich hatte absolut keine Probleme mit der Installation...

    Wie schon geschrieben ist das kopieren der gif Datein über Netzwerk kein Problem (ok das Wörtchen Netzwerk hätte ich noch mit rein bringen sollen :) ). Nur wie kann ich die über DMXC aufrufen?

    Ok mit der Startadresse wäre natürlich cool wenn man die über das Webinterface gleich andern könnte. Es geht natürlich auch so...

    Ich guck mir das mit den Videos jetzt demnächst an...

    Gruß
    Nutzer99

  • Die Dateinamen müssen nach dem Schama 000.*, 001.*, 002.* sein im Wertebreich von 0 bis 255. In DMXControl mit dem Gobokanal den entsprechenden Wert eingeben zum Auswählen.

    Das Raspberry Pi Beamertool sucht für jede Zahl zuerst eine *.png Datei, dann eine *.gif Datei und dann eine *.h264 Datei und nimmt dabei die zuerst gefundene. Will man also auf Wert 25 eine gif Textur muss man die gif Datei "025.gif" nennen und in den Texturenordner laden. Dabei darf aber keine "025.png" Datei im Texturenordner sein sonst wird diese zuerst gefunden. (Falls man die png Datei später nochmal braucht reicht umbenennen Löschen ist nicht notwendig)

    mfg
    Moritz