- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: Raspberry Roboter Websteuerung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    hab ne ganz interessante Webseite dazu gefunden: http://enterprisewebbook.com/ch8_websockets.html

    Ich muss also, bevor ich die Kommunikation beginnen kann erst mal einen Schlüssel bearbeiten und dann zurückschicken...
    Mein Programm um das zu testen sieht momentan so aus:

    Code:
    import hashlib
    import base64
    
    MAGIC = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
    HSHAKE_RESP = "HTTP/1.1 101 Switching Protocols\r\n" + \
                "Upgrade: websocket\r\n" + \
                "Connection: Upgrade\r\n" + \
                "Sec-WebSocket-Accept: %s\r\n" + \
                "\r\n"
    
    data = "GET HTTP/1.1\r\n" + \
        "Upgrade: websocket\r\n" + \
        "Connection: Upgrade\r\n" + \
        "Host: echo.websocket.org\r\n" + \
        "Origin: http://www.websocket.org\r\n" + \
        "Sec-WebSocket-Key: i9ri`AfOgSsKwUlmLjIkGA==\r\n" + \
        "Sec-WebSocket-Version: 13\r\n" + \
        "Sec-WebSocket-Protocol: chat\r\n" 
    
    
    print("HSHAKE_RESP: ", HSHAKE_RESP)
    
    print("data: ", data)
    
    headers = {}
    lines = data.splitlines()
    
    for l in lines:
        parts = l.split(": ", 1)
        if len(parts) == 2:
            headers[parts[0]] = parts[1]
    headers['code'] = lines[len(lines) - 1]
    key = headers['Sec-WebSocket-Key']
    
    print("key: ", key)
    
    combi = key + MAGIC;
    
    combi_b = combi.encode('UTF-8')
    
    print("combi: ", combi)
    
    #print("combi_b: ", combi_b)
    
    resp_data = HSHAKE_RESP % ((base64.b64encode(hashlib.sha1(combi_b).digest()),))
    
    print("resp_data: ", resp_data)
    Leider bekomme ich nicht den gleichen Accept Schlüssel zum zurückschicken raus wie im Beispiel auf der Seite...
    Die schicken den Key: i9ri`AfOgSsKwUlmLjIkGA== an das Serverscript und bekommen dann, wenn sie es mit dem "special globally unique identifier (GUID) string 258EAFA5-E914-47DA-95CA-C5AB0DC85B11" bearbeitet haben das raus: Qz9Mp4/YtIjPccdpbvFEm17G8bs=

    Ich bekomme aber das raus: ti16O6oiN0nzWbVtqq9omKeAd/Y=

    warum ? Kann mir einer helfen ? Ich habe ja schließlich nichts groß verändert, sondern den Code fast von da ganz unten übernommen : http://stackoverflow.com/questions/1...ing-to-python#

  2. #2
    shedepe
    Gast
    Das was shedepe beschreibt, hört sich doch schon mal gut an. Werde ich auf jeden Fall drüber nachdenken. Momentan habe ich das nämlich noch nicht durchblickt... Einen Nachteil sehe ich dabei aber. Es würde nicht mehr so einfach sein mehrere Webseiten mit unterschiedlichen Dingen zu basteln. Die Webseiten brauchen ja auch noch CSS und so...
    Ich möchte erst mal noch ein bisschen probieren, ob ich die TCP Lösung hinbekomme, wenn nicht, dann komme ich auf diesen Ansatz zurück.
    Du kannst einen Webserver davor schalten, und nur gewissen krams weiterleiten.

    Btw:
    Meine Erfahrung mit Webseiten die Roboter steuern war in der Vergangenheit meistens von solcher Natur, dass der Roboter irgendwann an einer Wand geklebt ist, weil man einen verdammt hohen Delay haben kann.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ich glaube, dass ich die Tage dann doch mal deine Lösung ausprobieren werde...
    Ich saß heute bestimmt den halben Tag daran, herauszufinden, warum auf einmal mein Javascript nicht mehr ging, obwohl ich nichts daran seit gestern gemacht hatte. Dann bin ich mal auf die Idee gekommen die Broserdaten(Cache) zu löschen und auf einmal ging es wieder... kein Plan warum ?? Dachte schon, dass mir der Raspberry einen Aprilscherz spielen wollte

    Jetzt bekomme ich schon mal wenigstens die Verbindung so hin, dass die Verbindung Clientseitig wieder angenommen wird (connection.onopen...)

    Nur das mit den Nachrichten klappt noch nicht, weil ich gerade gemerkt habe, dass nicht direkt die Daten mit xyz.encode verschickt werden, sondern die Daten in Frames transportiert werden...

    Wenn man z.B. das Wort "Pingen" mit connection.send mit dem Javascript verschickt zeigt mir Python das an: b'\x81\x860og\x80\x1f\x06\t\xe7*\x01' Wie ich das decodieren soll weiß ich noch nicht wirklich...




    Zu der Sache mit dem Delay: Ich möchte es ja wenigstens mal probieren Die meiste Zeit soll der Robi eh autonom unterwegs sein...

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 15.07.2015, 20:43
  2. Gertbot: Einfacher Roboter bauen mit dem Raspberry Pi
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 18.11.2014, 11:10
  3. Raspberry pi Roboter - WLAN
    Von Probot cool im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 15.08.2014, 16:43
  4. Rapiro: Kleiner Roboter hat einen Raspberry Pi im Kopf
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 03.07.2013, 18:50
  5. Erster Roboter mit Raspberry Pi
    Von Zondan im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 17.10.2012, 11:32

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen