Internetseite mittels GPIO umschalten.

  • Hallo allerseits,

    ich bastel gerade mit meinem PI rum und habe gleich eine Frage:

    (Wie) ist es möglich mittels Eingang an einem GPIO Pin eine dargestellte Website umzuschalten? Installiert ist Iceweasel als Browser.
    Dieser läuft im Vollbildmodus und zeigt eine Website (lokal vom Apache gebildet und wird mittels AJAX und Javascipt selbst aktualisiert).
    Es müssen jetzt aber noch mehr Informationen angezeigt werden, welche wegen der Übersicht nicht auf einen einzelne Seite passen.

    Ich möchte jetzt eine (oder evtl. mehrere) mechanische Tasten unterhalb des Display anbringen. Damit soll man dann Webseiten umschalten.
    Ideal wäre ein durchschalten bei Tastendruck...
    Drücken > Seite1.html >Drücken > Seite2.html >Drücken > Seite3.html > Drücken Seite1.html

    Ich habe ein einfaches 7" TFT Display am HDMI Anschluss.
    Das ganze kommt in den Außenbereich und deshalb hinter Plexiglas und so ohne Touchfunktionen.

    Ist das technisch erst einmal ohne Probleme möglich oder muss das als dynamischer Inhalt eingebunden werden (evtl. per Iframe?).
    Vielleicht geht's auch einfacher...

    Danke schonmal
    Gruß Bernd

    PS: Ich habe gesucht, aber immer nur den anderen Weg gefunden Browserklick schaltet Ausgang, aber nichts passendes für mich.

  • Ich würde vom Computerschrott eine alte USB Tastatur auschlachten und an die Elektronik ein paar Tasten anschließen, diesen kannst Du dann z.B. per Script od. xbind Befehl eine Funktion zuweisen. Vorteil, der Aufwand ist minimal und man schont die GPIO Ports.


  • Ich würde vom Computerschrott eine alte USB Tastatur auschlachten und an die Elektronik ein paar Tasten anschließen, diesen kannst Du dann z.B. per Script od. xbind Befehl eine Funktion zuweisen. Vorteil, der Aufwand ist minimal und man schont die GPIO Ports.


    Die sind doch nicht da um geschont zu werden. :D
    Hatte als erstes auch an sowas gedacht(xdotool über Interrupt getriggerten GPIO) aber wie willst du dann die Seite wechseln? :s

    Mir würde da spontan noch der DBUS einfallen. Damit müsste es doch auch möglich sein den Browser zu veranlassen per Skript eine bestimmtet Seite zu laden.

    [EDIT]
    Mir ist gerade wieder eingefallen dass es z.B. bei Midori möglich ist ein Kommando an den laufenden Browser zu schicken. Unter anderem ist es auch möglich eine beliebige Seite laden zu lassen.

    Code
    midori -e Location /pfad/zur/datei

    Eine übersicht über alle unterstützen Befehle bekommst du mit:

    Code
    midori --help-execute

    [EDIT 2]
    Funktioniert anscheinend doch nicht. Der obige Befehl markiert nur den Inhalt der Addressleite, öffnet aber nicht die angegebene Seite.

    Mit ein bischen tricksen kommst du aber trozdem zum Ziel. :)
    Du kannst z.B. Seite1, Seite2, Seite3, ... jeweils in einem eigenen Tab öffnen und dan mittels

    Code
    midori -e TabNext


    die einzelnen Tabs durchgehen. Was mir dabei besonders gefällt ist dass dabei die ladezeiten beim Seitenwechsel entfallen :)
    [/EDIT 2][/EDIT]

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (10. November 2014 um 04:17)

  • Wie es genau bei midori funktioniert hab ich nicht getestet, aber beim Firefox kann man mit Strg + Tab zwischen den geöfneten Tabs wechseln. Oder man verknüpft eine Funktionstaste mit einem Link zur entsprechenden Seite. Es sollte aber sicher noch andere Lösungswege geben.

  • Ich glaube es geht nur von der Webseite (Javascript) aus den Server (php) zu pollen:
    Stichwort: AJAX
    Je nach php-Antwort die entsprechende Seite mit Javascript vom Server laden & darstellen.
    Edit:
    Das php-Script antwortet je nach betätigtem "Schalterzustand"

    Wobei auch ein Tastendruck für den X-Servers simuliert werden könnte ....

    Einmal editiert, zuletzt von WernerPI (9. November 2014 um 22:09)


  • ...
    Ich möchte jetzt eine (oder evtl. mehrere) mechanische Tasten unterhalb des Display anbringen. Damit soll man dann Webseiten umschalten.
    Ideal wäre ein durchschalten bei Tastendruck...
    ...

    Du wirst nicht umhin kommen, das über den Browser zu lösen.
    Warum? Weil Aktionen immer von Browser ausgelöst werden. Wenn Du z.B. Deine index.htm änderst, ändert sich im Browser nix ... und zwar so lange nicht, bis Dein Browser eine Aktion auslöst.
    Das heisst: Du müsstest den Browser aus einem eigenen Programm heraus steuern, das auf Tastendruck reagiert. Alternativ dazu kannst Du auch einen eigenen Browser schreiben ...
    Da wäre es imho wesentlich einfacher, Buttons auf der Seite einzublenden ...

    cu,
    -ds-

  • Danke erst einmal für die Antworten.

    Mit der Tab-Umschaltung ist das doch schon mal super.
    Ich habe jetzt also die Möglichkeit mit einer alten Tastatur oder mit dem Befehl zu arbeiten.

    Ich berichte, wie ich das schlussendlich gelöst habe.
    Mit dem Iceweasel habe ich soeben auch mal STRG+TAB getestet -> funktioniert!

    Schade, dass wieder ein USB Anschluss dabei drauf geht... leider habe ich ja nur zwei.
    Musss wohl ein USB Hub ran.

    Gruß Bernd


  • Schade, dass wieder ein USB Anschluss dabei drauf geht... leider habe ich ja nur zwei.
    Musss wohl ein USB Hub ran.


    Dann häng doch einfach einen Taster an einen der GPIOs und lasse wenn dieser gedrückt wurde z.B. vom xdotool" die Tastenkombi Strg + Tab drücken. Dann musst du auch keinen USB Anschluss dafür opfern und Tatatur zerlegen.

    Mit Strg + Shift + Tab kann man auch zum vorherigen Tab wechseln :)

    Hier noch was Interessantes zur Variante mittels Ajax, CGI oder Webosckets. Wobei mir Websockets wohl am besten geeignet scheinen. Link

    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (10. November 2014 um 00:51)

  • Gute Idee mit "xdotool"!
    Ich wollte gerade eine Tastatur zerlegen und schauen, wie man da kompakt an die Tasten kommt und was man alles absägen kann.

    Kann man eigentlich mehrere Tastaturen anschließen?
    Müssen ja nicht gleichzeitig funktionieren, aber eine schnurlose habe ich für Servicezwecke schon dran. Sonst müsste ich immer umstecken.

    Die Seiten sind schon dynamisch mit Ajax und zeigen diverse Stromzähler und Daten laufend an. Jetzt aber passt das alles nicht mehr auf eine einzelne Seite und eine kleine Hilfeseite muss auch mit rein.

  • Man kann auch mehrere Tastaturen anschließen. Von der Tastatur brauchst Du nichts absägen, die Elektronik in den meisten Tastaturen ist nicht groß ( ca. 60 x 30 mm ) an die Kontakte der Platine sind kann man die Taster anlöten, wenn man die richtige Taste der Tastatur Matrix gefunden hat.

    Einmal editiert, zuletzt von Fliegenhals (10. November 2014 um 01:40)

  • Das klingt hier aber alles sehr grob.
    Mit meinen mageren Fähigkeiten würde ich ein Programm im Hintergrund starten,
    welches die GPIO's abfragt und entsprechend einen Tastendruck simuliert.
    Ein Browser lässt sich auch ziemlich leicht mit Befehlen steuern.
    Kann jetzt leider auf die schnelle keine Lösung anbieten, aber eine Tastatur würde ich dafür eher nicht zerlegen (zu viel Aufwand).

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

  • Hallo zuammen,

    habe die Beiträge jetzt zwar nur grob überflogen, aber um an eine X-Oberfläche (oder ein Programm dort) Eingaben wie mit einer Tastatur, jedoch über Kommandozeile oder Programm zu übergeben, sollte man mal "xautomation" ansehen (und dann natürlich erst mit "apt-get" installieren). Die Suchmaschine wird dafür hilfreich sein. ;)

    xautomation:

    Zitat


    Controls X from the command line and does "visual scraping".

    Viel Erfolg und Gruß, mmi

  • Ich habe das gestern selber mal mit nem Taster und dem xdotool getestet. Das klappt eigentlich richtig gut. Das einzige Problem dabei ist dass das Tool einen kleinen Bug besizt welcher die cpu für ein paar Sekunden komplett auslastet.
    Sendet man z.b Strg+Tab reagiert der Browser zwar sofort darauf und wechselt zum nächstetn Tab, openbox erzeugt aber für ein paar Sekunden 100% cpu load. Drückt man jetzt den Taster gleich nochmal addiert sich die Zeit die openbox blockiert wird. Der Browser wechselt dabei aber dennoch brav wenn die Taste gedrückt wird zwischen den Tabs hin und her.
    Der Bug wurde zwar schon behoben aber die Version die man mit apt-get installieren kann(2.20100701.2961) ist aber leider schon etwas älter und besitz diesen Bug noch.

    Getestet habe ich das ganze so:

    Code
    # Pullups für Taster
    gpio -g mode 17 up
    gpio -g mode 18 up
    
    
    # Endlosschleife - Tab vor
    while :; do gpio -g wfi 17 falling; xdotool key ctrl+Tab; sleep 0.5; done &
    # Endlosschleife - Tab zurück
    while :; do gpio -g wfi 18 falling; xdotool key ctrl+shift+Tab; sleep 0.5; done &

    Ganz kurz erklärt
    Die Taster schalten gegen GND/0V.
    Als erstes werden die internen Pullups für die zwei Taster aktiviert.
    Dann werden die Taster in einer Endlosschleife im Interrup betrieb "abgefragt" und wenn einer der Tasten gedrückt wurde, wird das xdotool mit den entsprechenden Parametern(key Tastenkombi) aufgerufen. Zusätzlich habe ich noch ein sleep 0.5 eingebaut was soviel bedeutet wie "Warte 0.5 Sekunden" und ist dazu da um den Taster zu entprellen(Wenn auch auf nicht sehr effizient Weise).


    @mmi xautomation muss ich mir mal anschauen, klingt vielversprechend :)

    DON'T PANIC!

  • Hallo Leute,

    eine Lösung die mir noch in den Sinn kommt, ist ein einfaches Python Programm zu schreiben. Das Einlesen des GPIO-ports kann ganz einfach mit WebioPi gemacht werden. Das bietet auch eine "Library" für python. (https://code.google.com/p/webiopi/wiki/PYTHONCLIENT) Dann kann in Python mit Hilfe von Selenium der Browser ferngesteuert werden. Selenium ist hierfür bestens geeignet, da es zum automatisierten Testen von Webseiten konzipiert ist. Auch gibt es Selenium für Python.

    Ich denke Selenium bietet genau das Wechseln zwischen Fenstern oder Tabs an: http://selenium-python.readthedocs.org/navigating.htm…dows-and-frames

    Oder du arbeitest mit der Browser History. Ich denke Selenium bietet da viele Möglichkeiten. Was hälts du davon?

  • Hallo nochmal,

    Selenium klingt echt gut, scheint auch sauber zu funktionieren.
    Mittels Tastatur ist auch irgendwie bastelig.... mal sehen, ich melde mich.
    Danke für die Antworten!

    Gruß Bernd

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!