paint-brush
Revolutionieren Sie die Entwicklung von Automobilsoftware mit der gRPC-API von RemotiveBrokervon@remotivelabs
283 Lesungen

Revolutionieren Sie die Entwicklung von Automobilsoftware mit der gRPC-API von RemotiveBroker

von RemotiveLabs3m2024/04/16
Read on Terminal Reader

Zu lang; Lesen

Die RemotiveBroker gRPC-API ermöglicht Entwicklern, Automobilsoftware effizient zu erstellen und zu testen. Sie unterstützt mehrere Programmiersprachen und bietet einen einfachen Python-Wrapper und gRPC-Stubs über ein öffentliches GitHub-Repository. Diese API ermöglicht das Lesen und Schreiben von Fahrzeugsignaldaten, anwendbar sowohl für Live- als auch für aufgezeichnete Dateneinstellungen. Der Prozess beginnt mit nur drei Codezeilen zum Einrichten eines RemotiveBrokers mit Docker. Darüber hinaus lässt sich die Plattform in die RemotiveCloud integrieren, um Entwicklungsbemühungen zu skalieren, gängige Fahrzeugnetzwerke zu unterstützen und HTTP/2 für reduzierte Latenz und Netzwerkbandbreite zu nutzen. Der Artikel erwähnt auch verfügbare TypeScript- und JavaScript-Stubs für gRPC-Web und ermutigt die Community, Beiträge durch Pull Requests zu leisten.
featured image - Revolutionieren Sie die Entwicklung von Automobilsoftware mit der gRPC-API von RemotiveBroker
RemotiveLabs HackerNoon profile picture
0-item
1-item


Lernen Sie die gRPC-API von RemotiveBroker kennen und erfahren Sie, wie sie das Prototyping, Erstellen und Testen von Automobilsoftware vereinfacht. Erstellen Sie Software nach Ihren Wünschen und in der Programmiersprache Ihrer Wahl. Wir machen die Dinge einfacher mit einem Python-Wrapper und den gRPC-Stubs, die in einem öffentlichen Repo auf unserem GitHub verfügbar sind.

Erledigen Sie Ihre Aufgaben mit unserer gRPC-API

Sie möchten schnell einen Prototyp mit Python erstellen? Sie interessieren sich für Rust? Mit der RemotiveBroker gRPC-API können Sie Fahrzeugsignaldaten in der Sprache Ihrer Wahl lesen und schreiben. Das bedeutet, dass Sie die von Ihnen bevorzugten Tools verwenden können, um schnell Anwendungen zu erstellen, die auf realen Fahrzeugsignaldaten basieren. Mit einer einfachen Konfiguration und einer Signaldatenbankdatei können Sie sofort mit aufgezeichneten Daten oder in einem physischen Fahrzeug mit Live-Daten arbeiten.


Verwenden Sie dieselbe API, egal ob Sie mit aufgezeichneten oder Live-Daten arbeiten. Schreiben Sie Ihre Anwendung einmal und testen Sie sie auf Ihrem Desktop und in einem Fahrzeug! Sie können zuvor aufgezeichnete Fahrzyklen wiederverwenden, z. B. in einem deterministischen ECU-Testaufbau oder beim Prototyping grafischer Benutzeroberflächen. Wenn Sie mit Ihrer Arbeit zufrieden sind, können Sie sie im wahren Shift-Left-Geist zu einem Prüfstand oder einem physischen Fahrzeug bringen, in der Gewissheit, dass der Code getestet wurde.


In Verbindung mit unserer Kollaborationsplattform RemotiveCloud können Sie Ihre Entwicklungsanstrengungen mit mehreren virtualisierten RemotiveBrokern schnell steigern!


Erste Schritte mit drei Codezeilen

Starten Sie einen RemotiveBroker mit drei Codezeilen:


 $ git clone https://github.com/remotivelabs/remotivebroker-bootstrap.git $ cd remotivebroker-bootstrap $ docker-compose up -d


Probieren Sie unsere kostenlose 3-minütige Demo aus oder sehen Sie sich einige unserer Sachen auf Github an, z. B. die APIs , einfache Beispiele , ProtoPie-Integration ) und gehen Sie zum Repo, um den Bootstrap RemotiveBroker auf Ihrem Desktop auszuführen.


Was ist ein RemotiveBroker?

Der RemotiveBroker ist ein flexibles Entwicklertool, das in die meisten Setups passt. Es stellt Fahrzeugsignaldaten über eine Pub/Sub-gRPC-API bereit. Wir unterstützen die gängigsten Fahrzeugnetzwerke wie CAN, Flexray, LIN und Automotive Ethernet – aktiviert durch .dbx, .xml (fibex), .ldf und .arxml. Wir haben auch E2E-Schutz nachgewiesen.


Machen Sie es noch einfacher mit API-Wrappern und gRPC-Stubs

Wir haben ein öffentliches Repository für unsere Wrapper und Stubs. Jeder kann gerne einen Pull Request mit einem Wrapper in seiner bevorzugten Sprache einreichen und mit unseren gRPC-Prototypendateien loslegen. Unser Ziel ist es, Wrapper und Stubs/Clients für alle verfügbar zu machen.


Vorteile von gRPC

Bei einer einfachen Konfiguration stellt der RemotiveBroker eine gRPC-API bereit, die Ihnen die Kontrolle überlässt. Dank der umfassenden Sprachunterstützung von gRPC können Sie verwenden, was Sie bevorzugen, z. B. Node.js, Ruby, C# oder Kotlin. gRPC nutzt HTTP/2 und ein binäres Nachrichtenformat, wodurch die Netzwerkbandbreite reduziert und die Latenz verringert wird. Dadurch kann unser RemotiveBroker große Datenmengen in Echtzeit senden, wie im Fall von Hochgeschwindigkeits-CAN & CAN-FD oder FlexRay.


Python-Wrapper

Wir haben eine Python-Wrapper-API für eine Teilmenge der RemotiveBroker- API, um das Erstellen von Anwendungen noch einfacher zu machen. Sie ist auch für eine einfache Installation über den Python-Paketindex verfügbar. Diese Wrapper-API erleichtert die Durchführung gängiger Vorgänge wie die Verbindung mit einem RemotiveBroker und das Einrichten von Abonnements für Fahrzeugsignaldaten.


Verbinden Sie sich mit einem RemotiveBroker und richten Sie ein Signalabonnement ein:

 # Connect to RemotiveBroker client = Client() client.on_connect = lambda c: print(f"Yay! - connected as {c.client_id} to {c.url}") client.on_signals = lambda signals: print(signals.to_json()) client.connect(url="http://localhost:50051") subscription = client.subscribe( signal_names=["Vehicle.Speed"], namespaces=["vss"], changed_values_only=False)


Typescript- und Javascript-Stubs/Clients

Da wir in unseren Webclients mit gRPC-Web arbeiten, stehen uns für grpc-Web sowohl Typescript- als auch Javascript-Stubs/Clients zur Verfügung. Es ist auch über npm/yarn verfügbar. Obwohl sie nicht so nützlich sind wie eine richtige Wrapper-API, sind die Stubs/Clients bei der Arbeit mit gRPC erforderlich. Beim Erkunden der API ist es jedoch hilfreich, sich nur die Stubs anzusehen.


Abonnieren Sie die Frame-Häufigkeitsverteilung:

 // Setup request const config = new FramesDistributionConfig() const namespace = new NameSpace()namespace.setName(namespaceName) config.setNamespace(namespace) // Subscribe this._frameDistributionStream = this._networkServiceClient.subscribeToFramesDistribution(config)


Unsere Werkzeuge und APIs entwickeln sich ständig weiter.

Folgen Sie uns auf GitHub und LinkedIn , um keine hilfreichen Inhalte für Entwickler zu verpassen.

Wenn Sie Wünsche oder Ideen haben, was wir als nächstes entwickeln sollten, bleiben Sie nicht fremd!