Raspberry soll per Browser auf Gerät zugreifen

  • Hallo

    bin ganz neu hier und möchte etwas lernen.

    Wir haben ein Gerät, daß ähnlich einer Fritzbox per Browser eingerichtet wird.
    5 x am Tag muss ich mich dort einloggen und einen Startbutton drücken.
    Das hab ich jetzt mit einem WindowsPC und Autoit gelöst, nicht ganz originell aber es geht.
    Was natürlich nervt ist das immer ein PC läuft.

    Das möchte ich jetzt mit dem Raspberry PI erledigen.

    Der Pi soll sich einloggen, durch die Menüs klicken und dann den Startbutton drücken anschließend wieder ausloggen.

    Ist Python dafür geeignet?
    Wo finde ich da die Starthilfe?

    cu
    jodurino

  • Kann man machen, ich wuerde empfehlen das "requests"-modul zu installieren und natuerlich dann auch zu nutzen.

  • Ja, das ist das richtige Modul. Und besser wird eine Softwarebeschreibung in meinen Augen auch nicht. Da wirst du dich schon einarbeiten muessen.

  • Hallo
    ja einarbeiten darum geht es ja, aber im Moment stehe ich da wie vor einer Glastür, kann zwar alles sehen finde aber die Klinke nicht um die Tür zu öffnen.

    Habe es mal auf einem WindowsPC probiert:
    import http.client, urllib.parse

    params = urllib.parse.urlencode({"u":"installer","p":"9abc","errmess":"","action":"login"})

    headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}

    conn = http.client.HTTPConnection("SEITE")

    conn.request("POST", "/login",params, headers)

    response = conn.getresponse()

    print(response.read())

    print("fertig")

    Habe das gerade getestet mit Python 3,5 auf Windows PC es macht nur kurz ein Fenster auf und wieder zu und nix weiter passiert.

    Jetzt gucke ich mir das auch mal mit dem Selenium an
    dazu muss ich wohl erst Firefox auf dem Raspberry bringen.

    cu

  • Erstens benutzt du nicht requests, womit du - wahrscheinlich - in Folgeaktionen Probleme bekommst, denn der Login benutzt sicher cookies, um Anmeldung aufrecht zu erhalten.

    Und das nur kurz ein Fenster aufgeht, ist ja nicht verwunderlich. Egal ob das Programm abbricht, oder tut was es soll - es ist irgendwann beendet, und dann schliesst sich das Fenster.

    Du musst dein Programm also entweder aus einer Shell heraus ausfuehren, oder in eine IDE, welche dir das erlaubt & die Ausgaben puffert.


  • Erstens benutzt du nicht requests, womit du - wahrscheinlich - in Folgeaktionen Probleme bekommst, denn der Login benutzt sicher cookies, um Anmeldung aufrecht zu erhalten.

    Und das nur kurz ein Fenster aufgeht, ist ja nicht verwunderlich. Egal ob das Programm abbricht, oder tut was es soll - es ist irgendwann beendet, und dann schliesst sich das Fenster.

    Du musst dein Programm also entweder aus einer Shell heraus ausfuehren, oder in eine IDE, welche dir das erlaubt & die Ausgaben puffert.

    Hallo deets

    Dein Satz liest sich so, daß wenn ich requests benutze dann Probleme mit cookies bekomme (?)
    Derzeit gucke ich mir noch die Phyton Tutorials an um erst mal die Grundlagen zu bekommen, habe da etwas zu hoch angefangen.

    Hallo pttr,
    mechanize ist wohl nur für phyton 2?
    ich denke ich probiere erst mal das selenium

  • Wie du meinen Satz so verstehen kannst, erschliesst sich mir nicht. Du benutzt NICHT requests, und darum wirst du Probleme bekommen. Wenn du requests benutzt, wirst du (mit Cookies zumindest) keine Probleme bekommen.

    Wenn du schon mit reinem Python Probleme hast, wird *mehr* Dinge in den Topf werfen das Problem nicht besser machen. Lern erst einmal einfache Python-Programme zu starten, und deren Ergebnisse auch anzuzeigen. Ein simples "print('hallo')" zB. Wenn das geht, dann probier mal was passiert wenn du einen Fehler einbaust. "print(1 / 0)". Wenn du die Fehlermeldung die dann kommt sehen kannst, und hier posten - dann kann man ueberhaupt weiter darueber reden, was da schief laeuft, und wie man da weiter kommt. Egal ob requests oder selenium - denn auch bei letzterem wirst du Fehler bei der Programmierung machen, und die musst du verstehen und beheben koennen.

  • Hallo deets
    ja ich bin dabei mir das u zerarbeiten.

    Habe diese Schritte gemacht
    http://www.smart-itler.de/howto-run-sele…-python-en.html

    also iceweasel installiert und selenium installiert.

    und dann diesen code probiert:
    from selenium import webdriver
    from pyvirtualdisplay import Display

    #create virtual display
    display = Display(visible=0, size=(800, 600))
    display.start()

    # make a firefox-instance
    browser = webdriver.Firefox()

    #open url
    browser.get('https://www.smart-itler.de')

    print browser.title


    in der Python 3.4.2 Shell kommt eine Fehlermeldung :"no module named ´selenium´

    in der python 2.7.9 Shell kommt nach "display = Display(visible=0, size=(800, 600))"
    die Fehlermeldung IndentationError: unexpected indent

    Also muss ich einfach weiter "unten" anfangen, so gesehen möchte ich das Ziel schon erreichen und hier dokumentieren, es gibt in den Foren zuviele Threads die sich irgendwie verlieren, daß möchte ich immer vermeiden.

  • Ein paar Anmerkungen:

    - code bitte in die dazu vorgesehenen Tags setzen, der ist sonst so nicht lesbar
    - die Fehlermeldungen passen nicht zu den Beschreibungen. Ein indent-Fehler haette auch Python 3 angemeckert, so doll hat sich die Syntax nicht geaendert.

    Also bitte noch mal den praezisen Code posten, in Code tags, ohne Tabs, sondern 4 Leerzeichen zur Einrueckung - sonst bringt das nichts.

  • Was soll denn überhaupt gemacht werden? Vielleicht reicht es ja auch schon einen wget Befehl oder ein paar curl Zeilen in ein Script zu packen.

    Hast du mal versucht in einem Browser mit der Fehlerconsole die URL zu finden, die aufgerufen wird?

    PS.
    Es gibt auch einen Browser für die Kommandozeile. [emoji6] Lynx glaub ich hieß der. Damit könnte man auch ein Bash Script schreiben.

    Einmal editiert, zuletzt von nelson (1. April 2016 um 07:36)

  • Wenn dieser Button dich nur auf eine Seite weiterleitet, also kein JS ausgeführt wird, dann kannst du dieses Script hier nehmen.
    Ansonsten musste auch Selenium benutzen, ist das beste Framework um solche Events zu triggern.

    Einmal editiert, zuletzt von damoekri (3. April 2016 um 15:24)

Jetzt mitmachen!

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