SDV Telemetry unterstützt mehrere Arten von Datenquellen. Auf dieser Seite finden Sie einen Überblick über diese Typen und die Funktionen, die Telemetry pro Datenquellentyp unterstützt.
Beispielcode für Datenquellenimplementierungen ist im Verzeichnis system/software_defined_vehicle/samples/telemetry verfügbar.
Definition der Datenquelle in Messwertkonfigurationen
In Messwertkonfigurationen werden eine oder mehrere Datenquellen definiert, aus denen Messwerte erhoben werden. Jede Datenquelle wird durch ihre source_identifier identifiziert. Das source_identifier-Format hängt von der Datenquelle ab:
| Datenquelle | Format | Beschreibung | Beispiele |
|---|---|---|---|
| SDV-Dienst | Protobuf-Nachrichtennamen |
Der vollständig qualifizierte Name der Protobuf-Nachricht. Wenn der Dienst mehrere Instanzen hat, hängen Sie den Namen der Dienst-Unit an, getrennt durch ein Pipe-Symbol (|).
|
"com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
|
| Vollständig qualifizierter Instanzname (FQIN) mit Service Unit-Name |
Der FQIN und der Name der Serviceeinheit, getrennt durch einen senkrechten Strich (|).
|
"vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
|
|
| Konfigurierbarer Publisher, der auf der Publisher Registry basiert | Name des Verlags oder Webpublishers | Die genaue serviceName, die zum Registrieren des Publishers in der Configurable Publisher Registry verwendet wurde. |
Jeder String ist gültig. |
Für jede Datenquelle können Sie die folgenden Optionen verwenden, um den Nachrichtenabruf zu parametrisieren. Sie können dieselbe Datenquelle mehrmals mit verschiedenen Optionen in derselben Messkonfiguration definieren. So kann beispielsweise ein Teil Ihrer Edge-Verarbeitung ein anderes Subsampling-Intervall verwenden als andere Teile.
| Option | Typ | Beschreibung |
|---|---|---|
connection_type |
SUBSCRIPTION oder ON_DEMAND |
Wenn diese Option auf SUBSCRIPTION festgelegt ist, abonniert der Telemetriedienst die Datenquelle. Wenn der Wert auf ON_DEMAND festgelegt ist, ruft der Telemetriedienst Nachrichten aus der Datenquelle nur bei Bedarf ab. |
configuration |
google.protobuf.Any |
Falls festgelegt, übergibt der Telemetriedienst das Konfigurationsobjekt bei der Kommunikation an die Datenquelle. |
sub_sampling_interval |
google.protobuf.Duration |
Wenn dieser Wert festgelegt ist, werden Nachrichten unterabgetastet, sodass der Telemetriedienst höchstens alle sub_sampling_interval eine Nachricht verarbeitet. |
fetch_last_message |
bool |
Wenn diese Option festgelegt ist, ruft der Telemetriedienst beim Abonnieren der Datenquelle die zuletzt veröffentlichte Nachricht ab, auch wenn sie in der Vergangenheit veröffentlicht wurde. |
Je nach Art der Datenquelle (siehe die folgenden Abschnitte) wird nur eine Teilmenge der Parameter vom Telemetriedienst unterstützt. Die folgende Tabelle bietet einen Überblick.
| Option | RPC-SDV-Dienst | SDV-Dienst zum Veröffentlichen/Abonnieren (Pub/Sub) | Publisher, die auf der konfigurierbaren Publisher Registry basieren |
|---|---|---|---|
connection_type: SUBSCRIPTION |
Unterstützt 1 | Unterstützt | Unterstützt |
connection_type: ON_DEMAND |
Unterstützt 2 | Unterstützt | Unterstützt 3 |
configuration |
Unterstützt | Nicht zutreffend | Unterstützt |
sub_sampling_interval |
Nicht unterstützt | Unterstützt 4 | Nicht unterstützt |
fetch_last_message |
Nicht unterstützt | Unterstützt 5 | Nicht unterstützt |
CreateSubscription implementieren.
GetLatestMessage implementieren.
PublisherInfo.supportsGet gleich true ist.
connection_type: SUBSCRIPTION unterstützt, nicht für connection_type: ON_DEMAND.
connection_type: SUBSCRIPTION unterstützt, nicht zutreffend für connection_type: ON_DEMAND.
SDV-Dienste (über den SDV-Kommunikationsstack)
Der Telemetriedienst kann Daten von anderen SDV-Diensten erfassen. Sowohl RPC- als auch Pub/Sub-SDV-Dienste werden unterstützt. Da der Telemetriedienst die Liste der Dienste, die er zur Build-Zeit abonnieren wird, nicht kennt, verwendet er die Protobuf-Reflektion, um Nachrichten zu decodieren, die von SDV-Diensten empfangen werden.
SDV-Dienste stellen standardmäßig keine Reflektionsmetadaten bereit. Damit ein SDV-Dienst als Telemetriedatenquelle verwendet werden kann, müssen Sie die Laufzeitkonfigurationsgenerierung des VSIDL-Katalogs des Dienstes aktivieren. Weitere Informationen finden Sie im VSIDL Provider Guide for Service Bundle Developers.
Nur für Test- und Evaluierungszwecke können Sie stattdessen die Option register_reflection_metadata in der Definition des Service-Bundles auf true festlegen. Weitere Informationen finden Sie unter Service-Bundle.
RPC-SDV-Dienste
Die Telemetrie bietet nur eingeschränkte Unterstützung für RPC-SDV-Dienste. Weitere Informationen finden Sie unter RPC-Dienste definieren. Damit Daten von einem RPC-SDV-Dienst erfasst werden können, muss der Dienst eine oder beide der folgenden RPC-Methoden verfügbar machen:
CreateSubscriptiongibt einen Stream nutzerdefinierter Antworten zurück:rpc CreateSubscription(<configuration>) returns (stream <response>)GetLatestMessagegibt eine nutzerdefinierte Antwort zurück:rpc GetLatestMessage(<configuration>) returns (<response>)
Mit dem Konfigurationsargument können Sie das Verhalten Ihrer Datenquelle parametrisieren, z. B. eine andere Veröffentlichungsfrequenz anfordern oder die Entität auswählen, die Sie abonnieren möchten (z. B. welcher Reifen für die Reifendruckmessung verwendet werden soll).
Wenn Sie einen RPC-SDV-Dienst als Datenquelle in einer Messwertkonfiguration definieren, können Sie in der Datenquellendefinition einen configuration-Wert angeben, der als Argument für diesen RPC verwendet wird. Der Telemetriedienst verarbeitet das Konfigurationsobjekt transparent und gibt alles weiter, was Sie definieren.
Der Typ des Konfigurationsarguments für beide Methoden kann entweder google.protobuf.Any oder ein benutzerdefinierter Typ sein. Wenn Sie beide Methoden angeben, müssen die Argumenttypen identisch sein. Wenn Sie für diese RPC-Methoden kein Konfigurationsargument benötigen, verwenden Sie google.protobuf.Empty.
Je nach connection_type, das in der Datenquellendefinition der Messwertkonfiguration angegeben ist, ruft der Telemetriedienst entweder CreateSubscription (für connection_type: SUBSCRIPTION) oder GetLatestMessage (für connection_type: ON_DEMAND) auf.
Pub/Sub-SDV-Dienste
Die Telemetrie unterstützt das Monitoring von Pub/Sub-Channels, die in VSIDL definiert und von SDV-Diensten bereitgestellt werden, ohne dass eine zusätzliche Konfiguration erforderlich ist. Weitere Informationen finden Sie unter Publisher einem Dienstpaket hinzufügen.
Zusätzlich zum Abonnieren von Pub/Sub-Channels unterstützt Telemetry auch das On-Demand-Abrufen der letzten Nachricht, die in einem Channel veröffentlicht wurde.
Konfigurierbare Publisher-Registrierung
Zusätzlich zur Erhebung von Daten aus SDV-Diensten über den SDV-Kommunikationsstack unterstützt Telemetry die Erhebung von Daten aus Anwendungen und Diensten, die Publisher in der konfigurierbaren Publisher-Registrierung des Telemetry-Dienstes registrieren. Diese Funktion ist am nützlichsten bei IVI, wo der SDV-Kommunikationsstack nicht verfügbar ist.
Die konfigurierbare Publisher-Registrierung kann auch zum Debuggen und Prototyping verwendet werden, ohne dass SDV-Service-Bundles geschrieben werden müssen. Weitere Informationen finden Sie unter Konfigurierbare Publisher-Registrierung.