Posts by driftmonster

    Hallo zusammen,


    ich würde gerne mal meine Software auf den neuesten Stand bringen, d.h., ich hab mir ne andere SD besorgt, neuestes wheezy, hyperion und meine bisherige aber schon angepassten Konfiguration draufgespielt.


    Leider scheint der neuste Kernel 4.1.6 den STK1160 nicht wirklich zu mögen, es kommen lediglich "frame too small" Meldungen ohne Ende.


    Die eigentlich Frage ist jetzt, ob man auf dem neuesten Kernel die "alten EasyCap" unterjubeln kann, um das Problem zu lösen. Detailliertes Problem: der Aktuelle Treiber im Image kann kein FrameScaling, der alte aber schon.


    Ich hoffe mir kann da jemand helfen ;)


    Also ich kann problemlos mit meinem Android 5.1 Nexus 5 auf pi-kodi.fritz.box:809 surfen, um auf das Interface von BTSync zu kommen. Ich verstehe auch nicht, warum das nicht gehen sollte.


    In deinem ersten Beitrag stand auch noch nichts von Avahi o.O Das hat doch erst rpi444 ins Spiel gebracht. Ansonsten müsste Chrome auf deinem Handy genau die selben DNS-Abfragen starten wie jeder andere Computer im Netzwerk, der die Einstellungen von der vermeintlichen FritzBox bekommt. Und da laufen die DNS-Abfragen halt über die FritzBox :)


    Zum einen hab ich keine FritzBox (mehr) und zum anderen forsche ich auch gerne mal selbst weiter, um nicht immer auf hier geposteten Antworten zu warten. Das geht schneller und man kann so schon einiges ausprobieren.
    Und zu guter Letzt ist das Problem sogar bekannt, gibt schon mehrere Threads im www ;)


    Avahi muss natürlich auf dem Gerät installiert werden, mit dem du über die hostnames zugreifen willst.


    http://stackoverflow.com/quest…ndroid-resolve-local-mdns
    http://android.stackexchange.c…ing-for-chrome-on-android


    Anscheinend gibt es nichts für Android, dass dies ermöglicht. Der einzige Weg wäre also, einen eigenen DNS-Server zu betreiben (bspw. auf deinem Raspberry Pi) und den DNS-Server in deinem Smartphone einzutragen.


    Bin gestern noch zu dem gleichen Schluss gekommen, was allerdings schon sehr ärgerlich ist. Schade, dass Android bzw Google da noch nicht mitgezogen hat. Wird dann wohl darauf hinauslaufen, dass ich mir doch mit dnsmasq einen eigenen DNS-Server aufmachen muss.


    Trotzdem Danke für die Hilfe, hake ich daher mal als erledigt ab ;)

    @ Tronn:
    Unter Windows rufe ich halt einfach mit "hostname:port" meine WebIF von node.js auf. Unter Android funktioniert das nunmal nicht, da der Hostname anscheinend nicht richtig aufgelöst wird.
    Smartphone hängt natürlich im WLAN ;)


    patlux:
    Genau das ist es , was ich nicht möchte. Hab ich zwar noch nicht explizit erwähnt, aber das ist ja nur ein Workaround, den ich nicht anwenden möchte. Eine Lösung des Problems sollte quasi Plug'n'Play sein, ohne was in einem Router zu konfigurieren.


    rpi444:
    Ich hab mich in der Zwischenzeit noch ein wenig schlau gemacht, avahi ist bereits installiert, peile aber irgendwie noch nicht so ganz, was ich damit anstellen muss.



    Hat denn sonst noch keiner sein WebIF über den Hostnamen seines RPi aufrufen wollen?

    Hallo zusammen,


    ich habe für meinen neusten RPi ein WebInterface geschrieben, das ich auch gerne übers Smartphone aufrufen möchte. Problem dabei ist, dass ich auf DHCP angewiesen bin und ich daher das WebIf über den Hostnamen erreichen möchte. Das funktioniert auch über Windows ohne Mucken, über Android bekomme ich aber ums Verrecken aber keine Verbindung. Ich möchte nicht jedesmal die IP raussuchen und im Browser eingeben müssen, daher die Frage, was und wie man vorgehen kann um das möglich zu machen?

    Funktioniert Internet bzw. DNS Auflösung über das WLAN des RPi?


    Ich würde mal ins Blaue raten und sagen, dass du kein Routing bzw Forwarding benutzt.


    Ohne weiter Dokumentation deinerseits wird das aber nichts mit einer Problemlösung.
    Jeder fängt mal an, dafür gibt es zur Not aber auch noch Suchmaschinen oder Bücher. Sowas ist nunmal immer mit Eigeninitiative verbunden.

    Ich habe gestern noch ein wenig rumgespielt, bin aber nicht so recht weiter gekommen.


    Hier ist mein originaler Code:


    Im Prinzip würde mir schon eine Lösung reichen, mit der ich die Pipe ordnungsgemäß schließen kann, es muss nicht unbedingt mit subporcess.Popen geregelt werden, wenn es auch einfacher geht ;)


    dbv: Ich werde das gleich noch ohne [0] testen

    Hallo zusammen,


    ich habe mir mal zum rumspielen eines dieser günstigen USB SNES Gamepads gegönnt. Im Prinzip läuft schon alles, nur habe ich ein relativ doofes Problem.


    Ich lese den Input des Gamepads von /dev/input/js0 in meinem Programm mittels

    Code
    pipe = open('/dev/input/js0', 'r')


    aus. Wenn ich nun das Programm beenden möchte, hört das Programm noch auf dem Stream und erst nach einem Tastendruck des Gamepads wird die Pipe mit

    Code
    pipe.close()


    geschlossen.


    Nun würde ich das gerne mit subprocess.Popen verwirklichen, soweit ich das verstanden habe, werden damit selbst solche Pipes ordnungsgemäß geschlossen.
    Ich muss noch dazu sagen, dass ich im weiteren Verlauf des Programms

    Code
    for bit in pipe.read(1):
    byte.append('%02X' % ord(bit))
    ### byte wurde zuvor auf eine leere Liste initialisiert


    verwende, um die Input Bytes der Buttons auszulesen. Es sollte daher idealerweise eine ähnliche Methode wie read() zur Verfügung stehen.


    Ich habe schon folgendes versucht

    Code
    import subprocess
    pipe = subprocess.Popen(['/dev/input/js0'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = pipe.communicate()[0]
    print('teeeeeeeest:\n\n' + pipe + '\n\n')


    Das bringt folgende Fehlermeldung

    Code
    Traceback (most recent call last):
    File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
    File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
    File "lcd.py", line 170, in get_input
    stdout, stderr = pipe.communicate()[0]
    ValueError: need more than 0 values to unpack


    Könnt ihr mir da auf die Sprünge helfen?

    Hallo zusammen,


    ich hatte auf Grund der Prüfungsphase des Studiums keine Zeit, um mich großartig um andere Sachen zu kümmern. Ich habe aber inzwischen noch ein wenig Arbeit investiert und eine Platine erstellt.
    Ein Video werde ich demnächst noch anfertigen, mir sind noch kleine Kinderkrankheiten aufgefallen, die noch beseitigt werden müssen. Dann sollte die Übertragung nochmals wesentlich schneller und stabiler sein, sodass sich grob geschätzt bis zu 10 Leute gleichzeitig am Auto anmelden und den Stream sehen können. Wie und was ich gemacht hab, werde ich dann hinterher erklären können ;)


    Zum Installieren von Node.js hab ich eine deutsche Anleitung verwendet, allerdings hauptsächlich, da dort ein Daemon Script drin stand. Musste mal Google fragen, war eines der ersten Ergebnisse.


    Zur Anmerkung; ich hab mir aus dem Repository die 11.8 heruntergeladen, da dies die neueste vorkompilierte und gut lauffähige Version für ARM beinhaltet. Kannst natürlich auch die aktuellste selbst kompilieren, das wird dich aber bestimmt zwei Stunden kosten.


    Da ihr aber auch noch was zum Gucken erwartet, hier mal das gerenderte Bild der Platine. Das fehlende Bauteil ist eine 5mm DuoLED, die in PovRay nicht enthalten ist.

    Also wenn du mit node.js schon einen Webserver am laufen hast ist der Rest absolut pillepalle :D


    Hab inzwischen alle meine eigenen Webinterfaces der RPi´s auf Node umgestellt, da das wirklich sehr schnell und easy zu erweitern ist ;)


    Hab mal n Bildchen gemacht


    Codetechnisch sieht das bei mir so aus (Beispiel Funksteckdosen):
    HTML - Beispiel.html


    Passend dazu Javscript für den Client - Beispiel.js in HTML einbinden


    Und auf der Serverseite - Server.js


    //EDIT: Um kurz das Prinzip hinter meiner Idee zu erläutern; Ich hab jedem Button im HTML Code eine ID gegeben, die direkt genutzt wird um daraus Variablen zum starten des Programmaufrufs zu generieren, die dann zum Server übertragen werden. Serverseitig muss ich nur überprüfen welchen "syscode" ich habe und setzte dementsprechend (noch) manuell eine Variable des Sockets auf die benötigte Zeichenkette. Ist noch etwas umständlich, das werde ich bei Zeiten aber ändern.


    Hab zudem noch den .css Teil vergessen ;)


    Der Rest sollte eigentlich selbsterklärend sein.


    Kein Ding ;)


    Wenn du deine Konfigrationsdateien von Hyperion und piblaster zur Verfügung stellen könntest, wäre auch dem Threadersteller geholfen (falls die IKEA-Leisten per PWM anzusteuern sind).


    Ich muss jetzt mal blöd fragen...wie meinst Du das ?


    Du kannst ja in der Hyperion Config den "grabber-v4l2" Part definieren, den habe ich bei mir auskommentiert bzw. komplett gelöscht, da das auch nach mehrmaligem Updaten von Hyperion und sogar neuem Aufsetzen des Systems nicht flüssig genug arbeitet.


    Daher starte ich hyperion-v4l2 manuell (via Script mit hyperiond).

    Code
    ## nice -n-20 zum Setzen der Priorität auf 0
    sudo nice -n-20 /usr/bin/hyperiond /opt/hyperion/config/hyperion.config.2D.external.json </dev/null >/dev/null 2>&1 &
    sudo nice -n-20 /usr/bin/hyperion-v4l2 -v NTSC --width 720 --height 480 --crop-left 5 --crop-top 8 --crop-right 7 --crop-bottom 13 -s 7 -f 0 -t 0.03 </dev/null >/dev/null 2>&1 &




    Im SSH Fenster sehe ich auch...dass die Farbwert von dem Effekt VIEL schneller an pi-blaster übergeben werden.


    Deshalb würde ich ja mal testen, ob es Auswirkungen hat, die Aktualisierungsrate zu senken. piblaster scheint hier noch der Flaschenhals zu sein, bei dem es dann erstmal rauszufinden gilt, wie oft piblaster in der Sekunde neue Daten verträgt.
    Ein anderer Ansatz könnten jedoch noch Bugs bei der Portierung auf den RPi2 sein, die sich mit ein bisschen Glück noch geben.


    Habe weder einen RPi 2 noch eine PWM LED (-Leiste) zum Testen da, cih würde aber evtl. einfach mal drastisch die Aktualisierungsrate in der Hyperion-Config verringern um zu sehen ob und wie sich die Anpassung auf die CPU Last auswirkt.
    Zudem würde ich auch den Framegrabber in der Hyperion-Config deaktivieren und (zumindest mal zum Testen) hyperion-v4l2 separat aufrufen. Der Integrierte verursacht auf meinem RPi 1B schon massive ruckler.

    Eine wirklich kostengünstigere Variante fällt mir nicht ein, außer einer kompletten Eigenentwicklung, die aber durch Fehlen von HDCP etc. nicht wirklich zu empfehlen ist. Zumal man da dann nochmal sehr viel Zeit und andere Ressourcen reinstecken muss.


    Alternativ könntest du auch einen LAN Video Extender verwenden, sind aber auch nicht ganz günstig, und dir das Signal über DLAN zum Beamer schicken.

    Das Lag ist per Stoppuhr gemessen, ist halt etwas tricky, mit ein wenig Übung geht das aber relativ gut. Als Videomaterial hab ich einen Bildwechsel von komplett schwarz nach komplett weis gemessen. Die Zeit ist der Mittelwert aus 10 Messungen, deshalb auch oben nur das "ca.".


    Hat denn noch keiner Hyperion auf nem RPi 2 getestet?

    Jo, sollte mit ein bisschen Eigeninitiative kein zu großes Problem sein. Ich kenn die LED Leisten von IKEA jetzt nicht von der Ansteuerung her, vermute aber mal, dass es auf PWM hinausläuft. Da gibt es in Hyperion das piblaster Device für, mit dem du das alles ansteuern kannst.


    Bemühe dazu mal die Forensuche, habe schon in nem anderen Thread Hilfestellung gegeben, was PWM LED Leisten und Hyperion angeht.


    //EDIT: Dir sollte natürlich klar sein, dass dann nur eine Farbe dargestellt werden kann (z.B. mittlere Farbe des Bildes)

    EEEhm...Der RPi ist am Beamer angeschlossen und du versuchst ihn mit der TV Fernbedienung zu steuern?


    Das ist zum Scheitern verurteilt. Das Steuern funktioniert mittels HDMI CEC, also wenn, dann muss der RPi über HDMI am Beamer hängen, der auch HDMI CEC unterstützen muss, dann klappts mit der Beamer Fernbedienung.