Verbindung zum Raspberry Pi

Der Raspberry Pi ist mit der statischen IP 192.168.100.100 vorkonfiguriert und empfängt auf Port 22 eingehende SSH-Verbindungen.

Zusätzlich läuft ein VNC Server, der unter Port 5900 erreichbar ist, allerdings nur für Verbindungen von localhost.

Um eine Verbindung zum Raspberry herzustellen, muss zuerst die eigene IP im gleichen Subnetz 192.168.100.X eingerichtet werden.
Danach muss ein Tunnel hergestellt werden, um den internen Port 5900 auf die eigene Maschine weiter zu leiten:
(Dies kann mit folgendem Befehl mittels der Kommandozeile unter *nix-Systemen oder mittels PuTTY unter Windows erreicht werden)
user@host:~$ ssh -L 5900:localhost:5900 kinemic@192.168.100.100

Nun kann man sich mit jedem VNC-Client unter folgender Adresse zum Pi verbinden: localhost:5900

Das folgende Video erklärt den Vorgang:

Events abonnieren

Sobald man einen Sensor ausgewählt und die entsprechende Verbindung hergestellt hat, gibt der Pi die erkannten Ergebnisse auf dem Port 9999 aus.

An diesen Port ist ein ZeroMQ (ZMQ) PUB socket gebunden, welcher jegliche Events an verbundene SUB Sockets verbreitet.

ZMQ bietet Implementationen in vielen Programmiersprachen an, so dass eine einfache Integration mit der Sprache Ihrer Wahl gewährleistet ist.
Weiter unten finden Sie auch Beispielimplementierungen. Link

Event-Definitionen

Markdown-Definition der Events die man mittels der Netzwerkschnittstelle empfangen kann:
HTML | Download

Netzwerkeinstellungen ändern

Die Netzwerkeinstellungen des Raspberry Pi kann man entweder per VNC oder mittels angeschlossenem Monitor (HDMI) ändern.

Klicke dazu den MINIMIZE-Knopf im Connector-Fenster, nun kann in den Ubuntu Netzwerkeinstellungen entweder die Ethernet-Verbindung oder die WiFi-Verbindung konfiguriert werden.

Softwareupdates

Updates für unsere vorinstallierte Software können mittels des Ubuntu Update Programms bezogen werden.

Dies ist entweder mittels der von Ubuntu bereitgestellten graphischen Oberfläche möglich, die man unter
System->Administration->Software Updater findet oder mittels eines Terminals auf dem Pi. Im Terminal können mit folgendem Befehl sämtliche Packages aktualisiert werden:

kinemic@kinemic-evaluation-package:~$ sudo apt update && sudo apt upgrade

Beachten Sie bitte, dass der Pi eine Internetverbindung haben muss, damit dieser Befehl erfolgreich ausgeführt werden kann.

Sollten Fehlermeldungen in der graphischen Oberfläche auftauchen (etwa zu wenig Speicherplatz auf /boot), kann ein einmaliges Update über das Terminal mit

kinemic@kinemic-evaluation-package:~$ sudo apt update && sudo apt dist-upgrade

diese meistens beheben.

Codeschnipsel

										
# Copyright Kinemic GmbH
#
# Minimal example to receive gesture events from Gesture Publisher
# You will need python-zmq

import json
import zmq
import argparse

def setup_subscriber(publisher_address):
    """
    Setup the subscriber socket and return it.
    :param publisher_address: zmq conform uri of publisher
    :return: subscriber socket
    """
    print("Subscribing to server on {}".format(publisher_address))
    context = zmq.Context()
    socket = context.socket(zmq.SUB)
    socket.connect(publisher_address)
    filter = ""
    # the following two lines are for Python2 compatability
    if isinstance(filter, bytes):
        filter = filter.decode("ascii")
    socket.setsockopt_string(zmq.SUBSCRIBE, filter)
    return socket


if __name__ == "__main__":
    PARSER = argparse.ArgumentParser("Minimal example for Gesture Subscriber")
    PARSER.add_argument("--publisher", help="zmq conform uri of publisher ",
                        default="tcp://192.168.100.100:9999")
    ARGS = PARSER.parse_args()
    SOCKET = setup_subscriber(ARGS.publisher)

    print("Start receiving messages, exit by pressing CTRL+C")
    try:
        while True:
            message = SOCKET.recv_string()
            event = json.loads(message)
            if event["type"] == "Gesture":
                # print out name of gesture (e.g. "Swipe L")
                print("Received gesture: {}".format(event["parameters"]["name"]))
    except KeyboardInterrupt:
        print("received CTRL+C, exit loop")
									

Abonnieren Sie doch solange unseren Newsletter!